黑马程序员__面向对象之多态

本文详细解析Java中的多态概念,包括多态的定义、原因、体现、前提、好处与弊端,以及向上转型和向下转型的转换过程。通过电脑主板与网卡、声卡的实例演示,直观展示多态在实际编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

黑马程序员——面向对象之多态

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

多态

定义:事物存在的多种体现形态。

起因:Java引用变量有两个类型,一个是编译时类型,一个是运行时类型。编译时类型由声明该变量时使用的类型决定,运行时异常由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现所谓的多态。

体现:父类的引用指向了子类的对象;父类的引用也可以接收自己的子类对象。

前提:类与类之间要么是继承关系,要么是实现关系。

好处:多态的出现大大的提高了程序的扩展性。

弊端:只能使用父类的引用访问父类中的成员。

转换:

           向上转型:把一个子类对象直接赋给一个父类的引用变量。

           向下转型:强制将父类的引用转成子类类型。

           注意:多态自始至终都是子类对象在做变化。

特点:

(1)      在多态中非静态成员函数的特点:

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

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

也就是说,非静态成员函数在多态调用时,编译看左边,运行看右边。

(2)      在多态中静态成员函数的特点:

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

(3)      在多态中成员变量的特点:

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

实例:

//电脑主板示例

//协议接口

interface PCI

{

       publicvoid open();

       publicvoid close();

}

//电脑主板类

class MainBoard

{

       publicvoid run()

       {

              System.out.println("主板运行!");

       }

       publicvoid usePCI(PCI p)//多态

       {

              if(p!=null)

              {

                     p.open();

                     p.close();

              }

       }

}

//网卡类

class NetCard implements PCI

{

       //实现接口中的抽象方法

       publicvoid open()

       {

              System.out.println("网卡打开");

       }

       publicvoid close()

       {

              System.out.println("网卡关闭");

       }

}

//声卡类

class SoundCard implements PCI

{

       //实现接口中的抽象方法

       publicvoid open()

       {

              System.out.println("声卡打开");

       }

       publicvoid close()

       {

              System.out.println("声卡关闭");

       }

}

class duoTaiDemo 

{

       publicstatic void main(String[] args) 

       {

              //创建主板对象

              MainBoardmb=new MainBoard();

              mb.run();

              //使用网卡

              mb.usePCI(newNetCard());

              mb.usePCI(newSoundCard());

       }

}


 

运行结果:

 

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值