これは最初のクラスです
package test;
public class Project {
public void doSomething (String stuff) {
writeStuff();
whichProject(stuff);
}
public void writeStuff(){
System.out.println("This is stuff");
}
public void whichProject(String stuff){
System.out.println("This is a random project " + stuff);
}
}
これが派生クラスです
package test;
public class Project1 extends Project{
public void whichProject(String stuff){
System.out.println("Coding project number one: " + stuff);
}
public static void main(String[] args) {
Project project = new Project1();
project.doSomething("stuff");
}
}
Project1 を実行すると、出力は次のようになります。
This is stuff
Coding project number one: stuff
whichProject()
Project ではなく Project1で呼び出すのはなぜですか? 結局のところ、doSomething()
Project のメソッドではないでしょうか。または、基本クラスの別のメソッドの内部に基本クラスのメソッドがある場合、変数が参照するオブジェクトは、別のメソッドの内部にいても、どのメソッド呼び出しが呼び出されるかを決定しますか?
ここで、の修飾子をwhichProject()
toに変更しprivate
て、クラスが現在
package test;
public class Project {
public void doSomething (String stuff) {
writeStuff();
whichProject(stuff);
}
public void writeStuff(){
System.out.println("This is stuff");
}
private void whichProject(String stuff){
System.out.println("This is a random project " + stuff);
}
}
出力は次のようになります。
This is stuff
This is a random project stuff
そのためwhichProject()
、変数が Project1 のオブジェクトを参照していても、Project のメソッドが呼び出され、Project1 のメソッドは呼び出されません。この場合、何が起こっているのかまったくわかりません。両方の状況(修飾子を使用するwhichProject()
場合と修飾子を使用する場合)の説明をいただければ幸いです。public
whichProject()
private