面向对象(1)之多态
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.好题分析
class Fu { public void show(){ System.out.println("fu show"); } } class Zi extends Fu{ public void show(){ System.out.println("zi show"); } public void method(){ System.out.println("zi method"); } } public class TextDemo{ public static void main(String[] args){ Fu f = new Zi(); f.method(); f.show(); } }