面向对象之多态
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象之多态相关的知识,希望对你有一定的参考价值。
1.多态
a:要有继承关系。
b:要有方法重写。
c:要有父类引用指向子类对象。
2.多态的几种运行规则
a:成员变量:编译看左边 运行看左边:
Animal t = new One();
System.out.println(t.c);
编译看父类有没有空参方法,运行用父类空参方法
b:成员方法:编译看左边(父类),运行看右边(子类)。
Animal t = new One();
t.print();
编译看父类有没有空参方法,运行用子类空参方法
c:静态方法:编译看左边,运行看左边
类中方法被static修饰
3.多态中向上转型和向下转型
Person p = new SuperMan();向上转型
将SuperMan提升为Persone类
SuperMan sm = (SuperMan)p;向下转型
必需先有向上转型再有向下转型调用子类特有的方法,将对象p强制转换为子类sm;
输出结果:谈几个亿的大生意
飞出去救人
注意:a.创建对象时候只有类中有构造方法时才访问基本类的构造方法
B.本案例多态体现:Animal a= new Cat();后再向下转型Cat c = (Cat)a;
4.多态的好处与缺点
优点:
* a:提高了代码的维护性(继承保证)
* b:提高了代码的扩展性(由多态保证)
缺点:
不能调用子类的特有属性和行为
5.好题分析
找错
1 class Fu { 2 public void show(){ 3 System.out.println("fu show"); 4 } 5 6 } 7 class Zi extends Fu{ 8 public void show(){//子类show方法要是不写会调用父类show方法,也就是子类没有重写父类方法而是继承了父类方法 9 System.out.println("zi show"); 10 } 11 public void method(){ 12 System.out.println("zi method"); 13 } 14 } 15 16 public class TextDemo{ 17 public static void main(String[] args){ 18 Fu f = new Zi(); 19 f.method();//父类没有method方法不能编译 20 f.show(); 21 } 22 }
以上是关于面向对象之多态的主要内容,如果未能解决你的问题,请参考以下文章