</pre><pre name="code" class="java">package Number;
class Parent{
private final void doit(){
System.out.println("父类.doit()");
}
final void doit2(){
System.out.println("父类.doit2()");
}
public void doit3(){
System.out.println("父类.doit3()");
}
}
class Sub extends Parent{
public final void doit(){
System.out.println("子类.doit()");//并不是覆盖父类的方法而是生成一个新方法
}
//public void doit2(){
//System.out.println("子类.doit2()");;//父类中的final方法是不能被覆盖的
//}
public void doit3(){
System.out.println("子类.doit3()");//覆盖父类的doit3()方法
}
public void doit4(){
System.out.println("子类.doit4()");
}
}
public class First{
public static void main(String[] args){
Sub s = new Sub();
s.doit();
s.doit2();
s.doit3();
s.doit4();
System.out.println("...............");
Parent p =new Sub();//因为赋给了父类类型的变量p,因此产生了一些限制,就是子类中有而父类中没有的方法不能调用
System.out.println(p.getClass());
//p.doit();//The method doit() from the type Parent is not visible
p.doit2();
p.doit3();
//p.doit4();//The method doit4() is undefined for the type Parent
//从测试结果来看 p和s的区别在于:子类中有而父类中没有的方法 p就不能够调用,而这个对于s来说是能够的
}
}
输出结果:
子类.doit()
父类.doit2()
子类.doit3()
子类.doit4()
...............
class Number.Sub
父类.doit2()
子类.doit3()