Java的多态
来源:互联网 发布:js判断ie浏览器版本 编辑:程序博客网 时间:2024/06/12 16:58
定义:某一类事物的多种存在形态。
比如说猫这类事物既具有猫的形态,也具有动物的形态,这就是事物的多态性。
简单说:就是一个对象对应不同的类型。
多态在代码中的体现:父类或者接口的引用指向其子类的对象。
动物 x=new猫();//一个对象,两种形态。
动态的好处:提高了代码的重用性。前期定义的代码可以使用后期的内容。
多态的弊端:前期定义的内容不能使用(调用)后期子类定义的特有内容,比如Animals中没有看门的方法,后期狗的子类中所定义的看门方法不能使用。
多态的前提:1.子类与父类必须有关系,要么继承要么实现。
2.要有覆盖。
abstract class Animals{abstract void eat();}class dog extends Animals{void eat(){System.out.println("啃骨头.");}void lookhome(){System.out.println("看家");}}class cat extends Animals{void eat(){System.out.println("吃鱼");}void catchmouse(){System.out.println("抓老鼠");}}public class DuoTaiDemo {public static void main(String[] arge){Animals a=new cat();//cat既属于猫,也属于动物a.eat();Animals b=new dog(); //自动类型提升,猫对象提升成了动物类型,但是特有功能无法访问,作用就是限制对特有功能的访问。b.eat();} public static void method(Animals c){c.eat();}}
}
当自动类型转换后如果还想有具体动物的特有功能,可以将对象进行向下转换。
Animals a=new cat();//cat既属于猫,也属于动物a.eat();cat c=(cat)a;//向下强制转换c.catchmouse();
多态时,成员的特点
1.成员变量
编译时,参考引用型变量所属的类中是否有调用的成员变量,如果有,编译通过;如果没有,编译失败。
运行时,参考引用型变量所属的类中是否有调用的成员变量,并运行所属类中的成员变量。
简单说,就是编译和运行都参考等号左边的类。在例子中即为animals(animalsa=new cat())
2.成员函数
编译时,参考引用型变量所属的类中是否有调用的函数,如果有,编译通过;如果没有,编译失败。
运行时,参考对象所属的类中是否有调用的函数。
简单说,编译看左边,运行看右边。
3.静态函数
编译时,参考对象所属的类中是否有调用的函数。
运行时,参考对象所属的类中是否有调用的函数。
简单说,编译都运行都看左边。
其实对于静态方法来说是不需要对象的,直接用类名调用即可。
阅读全文
0 0
- Java 的多态
- JAVA的多态
- java的多态
- java的多态
- Java的多态
- JAVA的多态
- Java的多态
- Java的多态
- Java的多态
- java的多态
- JAVA的多态
- Java的多态
- java的多态
- Java 的多态
- Java的多态
- java的多态
- Java的多态
- java的多态
- ionic路由
- ZOJ1084(四色定理)
- STM32F4 ETH-Lwip以太网通信
- .NET框架之---MEF托管可扩展框架
- 科普——未知的公共免费WIFI存在的风险及隐患
- Java的多态
- Android ndk初探(一)
- CentOS-7.2添加桌面快捷方式
- C#中正则表达式的使用
- 理解闭包(一)
- DPDK
- [Leetcode]Course Schedule
- MFC中使用控制台窗口输入输出
- egl introduce