在主类E的main方法中,创建类B 的对象并赋给父类A的对象a,使用上转型对象a来测试上转型对象的一些特性。

public class A {

    private int a=1;
    

    public int getA() {
        return a;
    }
    public void setA(int a) {
        this.a = a;
    }


    public void a()
    {
        System.out.println("a="+a);
    }
    public void c()
    {
        System.out.println("a-1="+(a-1));
    }
}
package jicheng;

public class B extends A {
    private int a=3; 
    private int b=2; 
    


    public int get() {
        return a;
    }
    public void setA(int a) {
        this.a = a;
    }
    public int getB() {
        return b;
    }
    public void setB(int b) {
        this.b = b;
    }
    
    @Override
    public void a() {
        // TODO 自动生成的方法存根
        //super.a();
        System.out.println("a+b="+(a+b));
    }
    public void b()
    {
        System.out.println("b="+b);
    }



}
package jicheng;

public class E {
public static void main(String[] args) {
    B i=new B();
    i.a();
    i.b();
    //A a=new A();
    
    //父类的对象 
    A a=i;
    
    //调用的是父类的方法,执行的却是子类的方法,因为子类方法覆盖了父类方法
    a.a();
    
    //调用的是父类的方法
    a.c();    
    
    
    
}

}

原文地址:https://www.cnblogs.com/wenwen123/p/5519214.html