码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象之多态

时间:2016-11-14 02:11:38      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:访问   ref   输出   ges   好题   eth   对象   编译   扩展   

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 }

 

面向对象之多态

标签:访问   ref   输出   ges   好题   eth   对象   编译   扩展   

原文地址:http://www.cnblogs.com/pytpyt/p/6060477.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!