Java多态

Java既然是面向对象编程语言,那就有面向对象的三大特性:封装、继承、多态。其中多态即是同一个行为具有多个不同表现形式或形态能力,(如相同的信息传送给子类或父类对象时,该对象会根据自己所属的引用执行不同的行为)

使用多态的好处:使程序可扩展性、灵活性更好等优点。

实现多态的三个必要条件:继承、重写,父类引用指向子类对象(向上转型)。

向上转型:在多态中将子类的引用指向父类对象。这样的引用具备调用父类和子类的方法

向上转型代码示例

从上面代码可以看出Animal类有一个run()方法,参数为Animal类型,而在Dog类中调用run()方法是参数类型是Dog(Dog类)类型的,我们都知道狗也是动物,所以可以将Dog类的对象看作Animal类的对象。其实把子类对象赋值给父类类型的变量就是向上转型。Dog类对象可以作为Animal类的run()方法参数,那么Cat(猫类)类也可以作为Animal(动物类)的run()方法参数,只要在Animal类(父类)的run方法中根据不同的对象作出不同的处理这样就可以使用一个方法运用到不同类型上,同样这种也是多态的基本思想。

多态的实现:创建Animal类,再创建两个内部类,Cat类和Dog类,两个类都继承Animal。

如下

 

//定义一个Dog类继承Animal

class Dog extends Animal{

   public Dog(){

   System.out.println("dog");

}

}

//定义一个Cat类,继承Animal

class Cat extends Animal{

   public Cat(){

      System.out.println("cat");

   }

}

Aniaml类中的方法,使用instanceof判断该方法接收Animal类的对象参数是否跟Cat类或Dog一致,判断不同类对象以作出不同的处理。

 

 

 

 

 

 

 

 

main方法实例化对象,调用run方法

public static void main(String[] args) {

      // TODO Auto-generated method stub

 

      Animal q = new Animal();

      q.run(new Dog());//Dog对象为参数调用run方法

      q.run(new Cat());//Cat对象为参数调用run方法

   }

 

运行输出结果

从输出结果可以看出使用不同类的对象作为参数以调用Animal类(父类)的run方法可以对不同的动物作出不同的处理,这就是多态,同一个行为具有多种形态。使用多态可以节省开发时间和减少维护成本,也减少了代码的重复性,实例化继承父类的子类对象再调用相应方法,这里只需要维护父类的相应方法即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值