請教:java繼承的問題,是不是該這樣理解?
請教:是不是該這樣理解?
1)//child.java
class parent
{
parent()
{
System.out.println("parent(): "+this);
}
public String toString()
{
return "Object of parent";
}
public void println()
{
System.out.println("parent.println()");
}
}
public class child extends parent
{
child()
{
System.out.println("child(): "+this);
}
public String toString()
{
return "Object of child";
}
public void print()
{
System.out.println("child.print()");
}
public static void main(String[] args)
{
try {
parent p=new child();
p.println();
((child)p).print();
//p.print();//[A]:會產生編譯錯誤﹔
}
catch (Exception ex) {
System.out.println(ex);
}
}
}
結果:
parent(): Object of child
child(): Object of child
parent.println()
child.print()
2)問題:
p雖然定義為parent的對象,
但在運行期間它是child的對象﹔
[A]的編譯錯誤是因為編譯器認為p是parent的對象,
而類parent沒有print()方法,
所以編譯不過。
是不是這樣,還請大家指點,謝謝!