package duotaidemo; /* * 写了一个对象向上转型的demo * 注意点:因为对象发生了向上转型之后,所调用的方法一定是被子类复写过的方法,但是注意的是,此时a不能调用 B中的独有方法 * 向上转型,子类-父类,b 是子类的实例对象,把b 给到A 就是属于向上转型 */ public class duotaidemo { public static void main(String[] args) { //子类实例化 B b = new B(); //向上转型,子类-父类,b 是子类的实例对象,把b 给到A 就是属于向上转型 A a = b; a.fun(); //a 既然是父类对象,调用父类中的fun方法,显然是要输出父类中的fun结果的值,但是调试发现 输出的是子类的fun结果,这是为什么呢? 因为对象 //发生了向上转型之后,所调用的方法一定是被子类复写过的方法,但是注意的是,此时a不能调用 B中的独有方法 } } //写一个父类 class A { //父类中写一个方法 public void fun(){ System.out.println("hell0"); } //再写一个方法 public void fun2(){ System.out.println("hai!"); } } //写一个子类去继承父类A class B extends A{ //复写父类中的fun方法 public void fun(){ System.out.println("哈哈哈哈"); } //写一个子类自己的方法 public void fun3(){ System.out.println("这是我儿子独有的方法"); } }