⚔疯狂输出⚔ java 中的 多态 快速理解
来源:互联网 发布:linux查看jdk版本 编辑:程序博客网 时间:2024/06/11 11:11
什么是多态?
一种事务的多种形态
怎么使用多态? 多态的规则
1.使用多态的前提是 必须要有继承关系 类与类之间一定要有关系链接
2.必须要有重写方法 如果没有重写方法的话。 多态这种方法就没有什么意义了
3.父类的引用要指向 子类的对象
需求 创建 动物类 猫类 狗类 都有一个吃的方法 动物类吃 猫吃鱼 狗吃骨头
public class polymorphic{public static void main(String [] agrs){ Animal a = new Cat();//猫是动物 a.eat();//方法的重写 Animalb = new Dog();//狗是动物 b.eat();//方法的重写}}//创建一个父类 动物类class Animal{ //创建一个成员方法 吃的方法 public void eat(){ System。out.println("吃东西"); }}//创建一个子类 猫类 class Cat{ public void eat(){ //写一个方猫吃鱼的方法 System.out.println("猫吃鱼"); }}//创建一个 狗类class Dog { public void eat(){ System.out。println("狗吃骨头"); }}
多态时 成员变量如何调用?
比较下面两个例子
puvlid class ceshi {public static void main (String[]agrs){ Father a = new Father(); a.speak(); System.out.println(a.say); Son b = new Son(); b.speak(); System.out。println(a.say)}}//创建一个父类class Father { int say = 10; public void speak(){ System.out.println("Fathe说"); } }class Son{ int say = 1; public void speak(){ System.out.println("Son 说") }}
新的例子
puvlid class ceshi {public static void main (String[]agrs){ Father a = new Father(); a.speak(); System.out.println("a.say") Son b = new Son();}}//创建一个父类class Father { int say = 10; public void speak(){ System.out.println("Fathe说"); } }class Son{ int say = 1; public void speak(){ System.out.println("Son 说") }}
多态中父类引用时 调用成员变量
编译需要看父类中有没有成员变量 没有编译不会通过 系统会报错
运行时 访问的就是父类中的这个成员变量
所以说多态调用成员方法时
编译时看父类!
运行时看子类!
多态的好处?多态的弊端
需求 普通人 和骗子的故事
public class story {public static void mian(String[]agrs){ People p = new Fraud();向上转型 父类引用子类对象 p.speak(); Fraud s= (Fraud)p; //强制转换 s.hit;}}//父类class People{ public void speak(){ System.out.println("聊天"); }}class Fraud extends People{ public void speak(){ System.out.println("洗脑") } public void hit(){ System.out.println("打你") }}
好处:1.增强了代码的可维护性 (建立在继承的基础上)
2.增强方法的可扩展性(核心)
弊端:不能调用子类的特殊方法(不是重写父类的方法)
阅读全文
0 0
- ⚔疯狂输出⚔ java 中的 多态 快速理解
- ⚔疯狂输出⚔ Java中的继承。
- 疯狂输出 ⚔ Java中的随机数
- ⚔疯狂输出⚔Java中复合的作用!!! 快速掌握
- 疯狂输出⚔Java中查表法的使用
- ⚔疯狂输出⚔ 抽象类 与 接口 快速理解二者的特点和两者的区别
- ⚔疯狂输出⚔ 数组中的折半查找
- ⚔疯狂输出⚔ 类中的String的用法
- ⚔疯狂输出⚔ collection中的Set方法
- ⚔疯狂输出⚔ java中泛型的作用
- 疯狂输出⚔ Java中函数中定义及应用
- 疯狂输出⚔ Java中函数中定义及应用
- 疯狂输出⚔ java基础之数组篇
- ⚔疯狂输出⚔数据的排序
- ⚔疯狂输出⚔二维数组
- ⚔疯狂输出 ⚔ 集合 和数组.
- 疯狂java 输出全排列
- 快速理解Java中的五种单例模式
- 先后出现Requested setting DEFAULT_INDEX_TABLESPACE和No module named
- Fence Repair POJ
- Programming Clojure.pdf 英文原版 免费下载
- 647. Palindromic Substrings
- centos7安装mariadb 笔记
- ⚔疯狂输出⚔ java 中的 多态 快速理解
- 103. Binary Tree Zigzag Level Order Traversal(BFS)
- mysql/oracle中create table as的用法
- centos无法安装pip解决办法
- python中Return浅析
- NVIDIA TK1 学习笔记(5):安装OpenCV
- 贪吃蛇 c++
- Java之instanceof
- JVM--详解虚拟机字节码执行引擎之栈帧结构