首页 > 其他 > 详细

上下转型问题

时间:2017-11-06 18:34:50      阅读:284      评论:0      收藏:0      [点我收藏+]

package cn.taylor.demo;

class Base11{
public void method(){
System.out.println("Base11");
}
public void methodA(){
System.out.println("父类独有");
}
}

class Son extends Base11{
public void method(){
System.out.println("Son");
}

public void methodB(){
System.out.println("子类独有");
}
}
public class Test01 {
public static void main(String arg[]){
Base11 Base1101=new Son(); //向上转型

//编译看左边,运行看右边
Base1101.method(); //本来是调用父类的method方法的,但是被子类覆盖了,所以调用的是子类的method方法
Base1101.methodA(); //调用的是父类的methodA方法
//Base1101.methodB(); 这里编译通过不了,父类的引用无法访问子类独有的方法

Son son01=new Son();
son01.method(); //调用子类将父类覆盖的method方法
son01.methodA(); //调用继承下来的父类的methodA方法
son01.methodB(); //调用子类自身特有的方法



//Son son02=(Son)new Base11();
//向下转型,等同于 Base11 a=new Base11(),Son son02=(Son)a,这样编译时没有错的,但是运行会出错
/* Base11 a=new Base11();
Son son02=(Son)a;

son02.method();
son02.methodA();
son02.methodB();
*/

//很少用到向下转型
Base11 Base1102=new Son();
Son son03=(Son) Base1102;
son03.method();
son03.methodA();
son03.methodB();

}

}

 

结果:

Son
父类独有
Son
父类独有
子类独有
Son
父类独有
子类独有

 

上下转型问题

原文:http://www.cnblogs.com/itaylor/p/7794288.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!