码迷,mamicode.com
首页 > 编程语言 > 详细

java的多态

时间:2015-06-05 12:05:52      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

多态在代码中的体现:
父类或者接口的引用指向其子类的对象。


多态的好处:
提高了代码的扩展性,前期定义的代码可以使用后期的内容。

多态的弊端:
前期定义的内容不能使用(调用)后期子类的特有内容。

多态的前提:
1,必须有关系,继承,实现。
2,要有覆盖。

 

//自动类型提升,猫对象提升了动物类型。但是特有功能无法s访问。
//作用就是限制对特有功能的访问。
//专业讲:向上转型。将子类型隐藏。就不用使用子类的特有方法。

//如果还想用具体动物猫的特有功能。
//你可以将该对象进行向下转型。
// Cat c = (Cat)a;//向下转型的目的是为了使用子类中的特有方法。
// c.eat();
// c.catchMouse();

// 注意:对于转型,自始自终都是子类对象在做着类型的变化。
// Animal a1 = new Dog();
// Cat c1 = (Cat)a1;//ClassCastException

 

if(a instanceof Cat)//instanceof:用于判断对象的具体类型。只能用于引用数据类型判断
// //通常在向下转型前用于健壮性的判断。

 

多态时,
成员的特点:
1,成员变量。
编译时:参考引用型变量所属的类中的是否有调用的成员变量,有,编译通过,没有,编译失败。
运行时:参考引用型变量所属的类中的是否有调用的成员变量,并运行该所属类中的成员变量。
简单说:编译和运行都参考等号的左边。哦了。
作为了解。

 

2,成员函数(非静态)。
编译时:参考引用型变量所属的类中的是否有调用的函数。有,编译通过,没有,编译失败。
运行时:参考的是对象所属的类中是否有调用的函数。
简单说:编译看左边,运行看右边。

因为成员函数存在覆盖特性。

 


3,静态函数。
编译时:参考引用型变量所属的类中的是否有调用的静态方法。
运行时:参考引用型变量所属的类中的是否有调用的静态方法。
简单说,编译和运行都看左边。

其实对于静态方法,是不需要对象的。直接用类名调用即可。

java的多态

标签:

原文地址:http://www.cnblogs.com/lyp-java/p/4553944.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!