2017-02-25 5 views
1

親クラスにメソッド-がある親クラスと子クラスがあります。オブジェクトを作成してもしなくても、このメソッドを子クラスから直接呼び出すことができます。 オブジェクトを作成せずにメソッドが子クラスでどのように使用できるようになるのだろうかと思います。 (静的メソッドでもない) メソッドにアクセスするためのオブジェクトを作成する必要があることは私の理解であった。なぜ誰かが説明してくれますか?Java-継承では、クラスを作成せずにメソッドを呼び出すことができます

public class testbase { 

    public void getData(String Data) throws IOException{ 
     Properties prop1; 

     prop1= new Properties(); 
     FileInputStream f= new FileInputStream("C:\\file.properties"); 
     prop1.load(f); 


     String data= prop1.getProperty(Data); 
     System.out.println(data); 
    } 

} 


class testproperties_file extends testbase { 

    @Test 
    public void test_class() throws IOException{ 
     getData("name"); 

    } 
} 
+0

「*オブジェクトを作成しないでください」とはどういう意味ですか?あなたは 'testproperties_file'のインスタンスを作成しますか? – UnholySheep

+1

子インスタンス**は**親インスタンスです。それが相続の全ポイントです。動物が走れるのであれば、犬は動物だから犬に走るように頼むことができる。 –

+0

実行が子クラスにあるとき、呼び出しは 'this'です。現在のオブジェクトを参照します。'test_class'メソッドを呼び出すと、' testproperties_file'のオブジェクトに対して呼び出されます。 – Sid

答えて

1

オブジェクトを作成せずに、子クラス でメソッドが利用できるようになったのかと思います。ここ

class testproperties_file extends testbase { 
    @Test 
    public void test_class() throws IOException{ 
     getData("name"); 

    } 
} 
test_class()

は、インスタンスメソッドです。つまり、このメソッドで呼び出されたすべてのコードが、現在のクラスのインスタンス(ここではtestproperties_file)に使用可能なメソッドを呼び出す可能性があります。したがって、このメソッドが実行されているときは、すでにオブジェクトに入っています。

testproperties_fileのインスタンスはtestbaseクラスから継承されます。
testbaseのすべての公開および保護されたインスタンスメソッドがここで呼び出される可能性があることを意味します。公開getData()インスタンスメソッドtestbaseは呼び出し可能です。


副題として、クラス名を大文字と小文字で区別する必要があります。 TestBaseおよびTestPropertiesFileは、Javaコーディング規則に従って優れています。

1

1として

https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

サブクラスはそのスーパークラスのすべてのメンバー(フィールド、方法、およびネストされたクラス)を継承します。コンストラクターはメンバーではないので、サブクラスによって継承されませんが、スーパークラスのコンストラクターはサブクラスから呼び出すことができます。

私はあなたがよりabour inheritance

サブ子がそのスーパークラスからのすべてのメンバー・メソッドを継承読むことをお勧めします。

実行制御が非静的メソッドに達した場合は、オブジェクトが作成され、そのメソッドが呼び出されていることを示します。 thisは、メソッドが呼び出される現在実行中のオブジェクトへの暗黙の参照です。派生クラスのオブジェクトがスーパークラスの振る舞いを持つため、実際の派生クラスの定義に従って多くの振る舞いが追加され、振る舞いがオーバーライドされるとスーパークラスから派生した振る舞いが変更されます。

関連する問題