首页 > 代码库 > java:对象的转型
java:对象的转型
面向对象编程有三个特征,即封装、继承和多态,学习多态必须了解向上转型和向下转型。
一、向上转型:将子类对象赋值给父类的引用
动物 a=new 狗();//这就为向上转型
向上转型都会成功,是安全的。 就像说狗是动物没问题。
语法:
a是引用变量,指向了d对象
class Test{ public static void main(String args[]){ Dog d=new Dog(); //Dog继承了Animal Animal a=d; //向上转型 } }
或
class Test{ public static void main(String args[]){ Animal a=new Dog(); //向上转型 } }
父类可以用子类对象内容,但不可以直接调用子类的成员属性和成员方法
如:jump在子类里面有,在父类没有
class Test{ public static void main(String args[]){ Animal a=new Dog(); //向上转型 a.jump(); //这会报错 } }
父类定义了eat方法,如果子类重写了该方法,那么父类的引用将会调用子类的方法(动态连接、动态调用)
class Test{ public static void main(String args[]){ Animal a=new Dog(); //向上转型 a.eat(); //将调用子类的 } }
总的来说:Father的对象可访问Son从Father中继承来的和Son复写Father的方法。其它的方法都不能访问。
二、向下转型:将父类的对象赋值给子类的引用
语法:
向下转型的前提是首先进行向上转型
class Test{ public static void main(String args[]){ Dog d1=new Dog(); Animal a=d1; //a指向的对象就是一只狗 Dog d2=(Dog)a; //(Dog)强制类型转换 向下转型 } }
狗是动物,那么动物是狗吗?不对,所以下面这方法是不对的
class Test{ public static void main(String args[]){ Animal a=new Animal(); Dog d2=(Dog)a; } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。