Java--多态(polymorphic),上下转型,多态好处弊端
来源:互联网 发布:idea怎么关联源码 编辑:程序博客网 时间:2024/06/06 18:11
多态(polymorphic):事物存在的多种形态
多态前提
(1)要有继承关系
(2)要有方法重写
(3)要有父类引用指向子类对象
多态好处
(1)提高了代码的维护性
(2)提高了代码的扩展性
多态坏处
成员变量:
多态前提
(1)要有继承关系
(2)要有方法重写
(3)要有父类引用指向子类对象
多态好处
(1)提高了代码的维护性
(2)提高了代码的扩展性
多态坏处
不能使用子类的特有属性和行为
成员变量
编译看左边(父类),运行看左边(父类)
成员方法
编译看左边(父类),运行看右边(子类)
静态方法
编译看左边(父类),运行看左边(父类);
静态和类相关,算不上重写,因此访问还是左边的
只有非静态的成员方法,编译看左边,运行看右边
class Polymorphic{public static void main(String[] args){Cat c = new Cat();c.eat();Animal a = new Cat(); //父类引用指向子类对象,就是向上转型a.eat();// a.catchMouse();Cat c1 = (Cat)a; //向下转型c1.catchMouse(); //多态提高扩展性animalEat(new Cat()); //一般在实际开发中创建对象时使用父类应用指向子类对象,直接创建子类对象更方便,可以使用子类中的特有属性和行为animalEat(new Dog());System.out.println("------------------------");Father f = new Son();//父类引用指向子类对象System.out.println(f.num);f.print();f.staticPrint();//相当于使用类名去调用System.out.println("------------------------");//基本数据类型自动类型提升和强制类型转换int i = 10;byte b = 20;// i = b; //自动类型提升// b = (byte)i; //强制转换} //如果两子类之间强转,就会出现类型转换异常,ClassCastExceptionpublic static void animalEat(Animal a){ //当做参数时使用多态最好,因为扩展性好a.eat();// a.catchMouse(); //不能使用子类的特有属性和行为//关键字 instanceof 判断前边的引用是否为后边的数据类型if (a instanceof Cat) {Cat c = (Cat)a;c.eat();c.catchMouse();}else if (a instanceof Dog) {Dog d = (Dog)a;d.eat();d.lookHome();}else{a.eat();}}}class Animal{public void eat(){System.out.println("动物吃饭");}}class Cat extends Animal{public void eat(){System.out.println("猫吃鱼");}public void catchMouse(){System.out.println("猫抓老鼠");}}class Dog extends Animal{public void eat(){System.out.println("狗吃肉");}public void lookHome(){System.out.println("狗看门");}}/* 成员变量 编译看左边(父类),运行看左边(父类) 成员方法 编译看左边(父类),运行看右边(子类) 静态方法 编译看左边(父类),运行看左边(父类); 静态和类相关,算不上重写,因此访问还是左边的 只有非静态的成员方法,编译看左边,运行看右边*/class Father{int num = 10;public void print(){System.out.println("Father");}public static void staticPrint(){System.out.println("static Father");}}class Son extends Father{int num = 20;public void print(){System.out.println("Son");}public static void staticPrint(){System.out.println("static Son");}}
成员变量:
成员方法:
父类不能调用子类的方法,报错:
最终输出:
1 0
- Java--多态(polymorphic),上下转型,多态好处弊端
- java多态polymorphic多态的理解三之向上转型和向下转型及优与不足
- 多态的好处与弊端
- 多态,前提,特点,好处,弊端
- java多态polymorphic多态的理解一
- java多态polymorphic多态的理解二
- Java中的上下转型
- java上下转型
- Java上下转型
- java中的上下转型
- 多态的使用和概述以及弊端和好处
- C++ 多态 polymorphic 编译时期多态
- C++ 多态 polymorphic 运行时期多态
- Java多态性以及上下转型
- java多态polymorphic多态的理解四之多态的优点
- Day11多态部分-6 【1.5 多态的好处和弊端】
- Polymorphic form--多态表单
- java父类子类上下转型总结
- Android 碎片管理
- window下安装tensorflow
- jquery validate 验证去除记忆方法
- ngx_connection_t结构体
- 微服务架构案例及分布式事务解决方案
- Java--多态(polymorphic),上下转型,多态好处弊端
- PHP工作笔记:离线执行php任务
- 简述Yii2里的AOP思想
- 什么是网关及网关作用
- HDU 2082 找单词 [母函数问题]
- QVariant的canConvert和convert函数--笔记
- Docker入门教程
- Springboot项目配置myBatis连接MySQL数据库
- UnityFPS射击游戏目录