public class InheritTest {
private int prvalue = 100;
public int puvalue = 100;
private void method1() {
System.out.println("父类的私有方法");
}
public void method2() {
System.out.println("父类的公有方法");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
class child extends InheritTest{
private int prvalue = 999;
public int puvalue = 999;
public int puvalue2 = 1000;
private void method1() {
System.out.println("子类的私有方法");
}
public void method2() {
System.out.println("子类的公有方法");
}
public void method3() {
System.out.println("子类的添加公有方法");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
InheritTest a = new child();
System.out.println(a.puvalue);//父类的公有成员,无动态绑定
a.method2();//动态绑定
a.method3();//错误,作为父类的实例a,并没有method3方法,强制类型转换后有
a = (child)a;//这种做法十分可笑,什么也没有做,a的数据类型不会变
child c = (child)a;//这是正确的
System.out.println(c.puvalue);//子类的公有成员
c.method3();//子类额外添加的方法
}
}
Java覆盖机制探析,动态绑定机制探析
最新推荐文章于 2024-04-24 22:51:49 发布