码迷,mamicode.com
首页 > 编程语言 > 详细

java学习笔记-多态

时间:2016-03-28 18:39:17      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

  个人对多态的一点理解,不一定完全正确,欢迎大家批评指正。

 1.什么是多态

    面向对象的三大特性:封装,继承,多态。从某种程度来说,多态是建立在封装和继承的继承之上的。

    多态性可以理解为同一个事物的多种表现形态

    1)方法的重载与重写

      2)子类对象的多态性:父类的引用指向子类对象(更多的是指这种形式)

               父类 f = new 子类();

 2.子类对象的多态性使用要求:

          1)要有类的继承

      2)要有子类对父类方法的重写

    3)父类的引用指向资料对象

 3.属性没有多态性

 下面用一个简单的例子来掩饰一下:

 1 //父类
 2 public class Person {
 3     public void eat(){
 4         System.out.println("人吃饭");
 5     }
 6     public void walk(){
 7         System.out.println("人走路");
 8     }
 9 }
10 //子类Man
11 public class Man extends Person {
12     public void eat(){
13         System.out.println("男人吃饭");
14     }
15     public void walk(){
16         System.out.println("男人走路");
17     }
18     public void sleep(){
19         System.out.println("睡觉");
20     }
21 22 //子类Woman
23 public class Woman extends Person {
24     public void eat(){
25         System.out.println("女人吃饭");
26     }
27     public void walk(){
28         System.out.println("女人走路");
29     }
30     public void shopping(){
31         System.out.println("购物");
32     }
33 34 //测试类
35 public class Test{
36     public static void main(String[] args) {
37         //父类的引用指向子类对象 
38         Person p = new Man();//向上转型 即将子类型转换为父类型
39         //虚拟方法调用:通过父类的引用指向子类对象实体,调用方法是执行的是子类重写父类的方法
40         p.eat();//男人吃饭
41         p.walk();//男人走路
42         //p.sleep(); //错误 用父类引用调用了父类不存在的方法
43         Man m = (Man)p;//向下转型 即将父类型转换为子类型,必须强制转换,并且父类型的引用必须指向子类的对象,即指向谁才能转换成谁。
44         m.sleep();//睡觉
45         
46        Person p1 = new Woman();
47        //java.lang.ClassCastException
48        //向下转型时,只能转向指向的对象类型
49        //Man m1 = (Man)p1;
50          Woman w = (Woman)p1;
51     }
52 }    

    通过上面的例子我们可以发现,如果想要调用父类没有的方法,而子类独有的方法时,需要进行强制类型转换。如上面将p强制转换m。

    并且转换的时候只能转向指向的对象类型,如p1只能向下转型为Women m1,而不能转型为Man类型

 

 4.使用多态的好处 

       1)提高了程序的扩展性和维护性

       2)具有很强的灵活性

       3)简化了代码编写和修改过程

     

java学习笔记-多态

标签:

原文地址:http://www.cnblogs.com/Bloone/p/5329362.html

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