黑马程序员-java多态学习笔记

------- android培训java培训、期待与您交流! ----------

JAVA多态

多态:可以理解为事务存在的多种体现形态

一、多态的提现:

l 父类的引用指向了自己的子类对象

l 父类的引用也可以接受自己的子类对象

例如

Class Animal{  

            public void  eat()

                {

                 System.out.println(“吃东西”);

                 }

           }

Class Cat extends Animal

{

      Public void catchMouse()

      {

       System.out.println(“抓老鼠”);

      }

 }

Class Dog extends Animal

{

      Public void kanjia()

      {

       System.out.println(“看家”);

      }

 }


Class Demo

{

   Public static void main(String[]args)

   {

     Animal c=new Cat();

     c.eat();//父类引用指向子类对象  并且 调用子类eat()功能

     Cat b=(Cat)c;

     b.catchMouse();//如果想用c调用子类独有的功能则必须 将c强行转换成b

     function(new Cat());//父类引用接受子类对象 

     

     }

    Public static void function(Animal a)

    {

     a.eat();

    }

/*

    Public static  void function1(Cat a)

    {

    C.eat();

    }

    Public static  void function2(Dog d)

    {

    d.eat();

    }

/*很明显 有了function function1和function2都可以省了*/


}


 

二、多态的前提

    必须是类与类之间有关系,或者继承或者实现。通常还会有一个前提:存在覆盖

三、多态的好处

     多态的出现大大提高了程序的扩展性

举例说明:电脑运行基于主板,主板上面有声卡,显卡,网卡等等

Interface PCI//PCI接口  

{

  Public void oper();

  Pulblic void close();

}

Class Main Board

{

    Public void run()

   {

    System.out.print(“mainboard run”);

   }

   Public void usePCI(PCI p)//将这个接口 安装到主板上

   {

   P.oper();

   P.close();

   }

}

//所有要插在主板上运行的程序都要实现这个接口

Class NetCard implemets PCI

{

     Public void open()

     {

       System.out.println(“netcard oper”);

     }

     Public void close()

     {

      Sysetem.out.println(“netcard close”);

     }

}

Class SoundCard implemets PCI

{

      

     Public void open()

     {

       System.out.println(“SoundCard oper”);

     }

     Public void close()

     {

      Sysetem.out.println(“SoundCard close”);

     }


}

Class Demo

{ 

     Public static void main(String[]args)

     {

       Mainboard mb=new MainBoad();

       Mb.run();

       mb.usePCI(new  NetCard());

       mb usePCI(new   SoundCard ());

     }

}


 

有了PCI这个接口  无论以后要在主板上加上个什么卡 都可以很容易

 在现实生活中接口可以看做是  插座  所有要用电的机器都需要创建一个插头  即:实现

 这个接口   就可以运行起来  当然没有插头的电器也可以运行起来 不过很麻烦   

四、多态的特点及弊端

l 在多态中成员函数的特点

在编译时期:参阅引用型变量所属的类中是否有调用的方法,如果有,编译通过,如果没有编译报错

在运行时期:参阅对象所属的类中是否有调用的方法

简单的总结就是:成员函数在多态的调用时,编译看左边有木有,运行看右边有木有

l 在多态中,成员变量的特点:

无论编译和运行,都参考左边 即引用类型所属的类

l 在多态中,静态成员函数的特点

     静态函数在继承中没有覆盖的情况

无论编译和运行,都参考左边

弊端:通过多态的特点我们发现 多态提高了扩展性,但是只能使用父类引用访问父类中(存在)的成员

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值