Java 多态
来源:互联网 发布:js日历 编辑:程序博客网 时间:2024/05/23 15:43
一、 多态
一种事物的多种形态
比如:青蛙 卵 —-> 蝌蚪 —-> 青蛙
二、 多态的规则
- 类与类之间建立联系,建立继承的关系
- 必须要有方法的重写
- 父类的指针(引用)指向子类的对象(空间)
举例public class Demo01{ public static void main(String[] args){ //本类的引用(指针) 指向 子类的对象(空间) //猫是一只猫 Cat c = new Cat(); c.eat(); //猫是一直动物(不能是 动物是一只猫) //父类的指针 指向 子类的对象 Animals a = new Cat(); a.eat(); //狗是一直动物 Animals aDog = new Dog(); aDog.eat(); }}class Animals{ public void eat(){ System.out.println("吃") }}class Cat extends Animals{ public void eat(){ System.out.println("猫吃老鼠"); //方法的重写 }}class Dog extends Animals{ public void eat(){ System.out.println("狗吃屎"); }}
多态时,成员变量是如何调用的?
多态时,当父类引用调用成员变量时,编译需要看父类有么有这个成员变量,没有编译不会通过,访问就是父类的这个成员变量.
举例public class Demo02{ public private static main(String[] args){ Father f = new Son(); // 父类的指针 指向 子类的对象 f.speak(); // 打印 Sun说 System.out.println(num) // 打印 10 Son s = new Son(); s.speak(); //打印 Sun说 System.out.println(num) //打印 20 }}class Father{ int num = 10; public speak(){ System.out.println("Father 说") }}class Son extends Father{ int num = 20; public speak(){ System.out.println("Sun 说") }}得出结论:访问成员变量时, 访问父类,访问成员变量 编译 和 运行(看父类) 多态 调用成员方法时,编译看父类.运行看子类
三、多态的利弊
多态的好处
- 增强了代码的可维护性(建立在继承上)
- 增强方法的可扩展性(核心)
多态的弊端
- 不能直接调用子类的特殊方法需要通过强制转换
举例public class Demo03{ public private static main(String[] args){ Person p = new Cheat(); // 父类引用 指向 子类对象 向上转型 p.speak(); // p可以调用子类的speak方法,但是无法调用puch方法 Cheat ct = (Cheat)p; // 这个时候需要使用强制转换 向下转型 ct.puch(); // 可以调用puch方法 }}class Person{ public void speak(){ System.out.println("聊天"); }}class Cheat extends Person{ public void speak(){ System.out.println("骗人") } public void puch(){ System.out.println("用小拳拳锤你胸口"); }}
阅读全文
1 0
- Java学习 java -- 多态
- java多态
- java多态
- java多态
- java多态
- Java多态
- java多态
- JAVA@多态
- Java多态
- java 多态
- Java多态
- java多态
- [Java] 多态
- JAVA多态
- Java多态
- java多态
- java 多态
- java多态
- hadoop-mapreduce原理篇
- splay的总结
- 游戏更新维护serverlist服务器列表替换python脚本
- Expert SQL Server in-Memory OLTP.pdf 英文原版 免费下载
- Spring之beanFactory
- Java 多态
- 【Scikit-Learn 中文文档】模型评估: 量化预测的质量
- 动态规划学习(4,深度优先搜索)
- 开发一流的 Android SDK:Fabric SDK 的创建经验
- ajax--3.转异步注意
- UVA136
- 集体智慧编程第三章 发现群组
- Django系列教程(6)-- HttpRequest对象和HttpResponse对象
- OCA Oracle Database 11g Administration I Exam Guide (Exam 1Z0-052).pdf 英文原版 免费下载