您的位置:首页 > 编程语言 > Java开发

Day08第八天java基础-----------多态

2012-11-01 19:50 281 查看
    ------- android培训java培训、期待与您交流!
----------

1、多态:

             可以理解为事物不同的表现形态。

             表现形态:父类引用指向自己的子类对象。

             也可以理解为父类接受自己的子类对象
 class DemoA

 {

              void show()

              {

                                  //方法体中的内容

               }

              void show()1

               {

                                 //父类中没有被覆写的方法

               }

 }

 class DemoB extends DemoA

 {

                 void show()

                  {

                                  //方法体中的内容。

                  }

                 public static void main(String args[])

                 {
                                DemoA a = new DemoB();//父类的引用指向自己的子类对象

                                a.show(); //调用父类中被子类覆写的方法

                                a.show1();//调用父类中没有被子类覆写的方法

                  }

 }
2、多态的前提:

 必须是类与类之间有关系,要么继承,要么实现。通常还存在一个前提就是覆盖。
3.利与弊:

 好处:大大的提高了扩展性。

 弊处:提高了扩展性,但是只能用父类的引用访问父类的成员,也就是说,只能是继承了父类才能

 访问并覆写父类中的方法。
4、前期调用功能,后期定义子类实现功能,并把子类作为参数传递进来

5、向上转型和向下转型:


 类型的提升:向上转型,转成父类

 向下转型:也就是说如果想用子类中特有的功能必须进行强制的转换,把父类的引用强制转换成

 子类的类型:

 代码如下:
 class Animal{

                       void eat()
                       { 
                                           // 定义一个吃的方法
                        }

 }

 class Mao extends Animal{

                            void eat(){

                                     System.out.println("猫吃鱼");  // 继承了父类中的方法并覆写了方法

                               }

                            void catchMouse(){

                                     System.out.println("猫抓老鼠");//子类的特有方法

                              }

 }

 class Demo{

              public static void main(String args[]){

                         Animal a = new Mao();//父类的引用指向了自己的子类对象

                         a.eat(); //调用子类中被覆写的方法

                         Mao m = (Mao)a;// 是把父类的引用强制的转换成了子类类型

                         m.catchMouse();// 输出了子类中特有的方法

                       } 
 }
6、多态的应用:
               在多态中函数成员的特点:函数成员的特点是非静态的。

             (1)、编译时参阅引用类型所属的类中是否调用有方法(也就是说父类中是否有方法被子类所重写)

             (2)、运行时参阅对象所属的类中是否有调用方法。

 也就是说编译时看左边,运行时看右边。
7、在多态中成员变量的特点:
              无论编译和运行时都参考左边(引用类型所属的类)
8、注意一个异常:”classcastException“:是类型转换异常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: