java中的多态

来源:互联网 发布:java中this的用法 编辑:程序博客网 时间:2024/06/03 17:18

java中的多态


  • 引用多态
  • 方法多态

引用多态

父类的引用可以指向本类的对象
父类的引用可以指向子类的对象

即父类的引用既可以指向本类又可以指向子类,这就是多种形态。我们把这种形式就叫做多态。

package com.yxm;public class Animal {}
package com.yxm;//继承是多态的实现基础public class cat extends Animal {}
package com.yxm;public class Initail {    public static void main(String[] args) {        Animal obj1=new Animal();//父类的引用指向本类的对象        Animal obj2=new cat();//父类的引用指向子类的对象      //  cat obj3=new Animal();//子类的引用不能指向父类的对象    }}

方法多态

创建本类对象时,调用的方法为本类的方法
创建子类对象时,调用的方法为子类重写或继承的方法

如果我们创建的对象是父类的本类对象,我们调用的方法肯定是父类的方法;
如果我们创建的对象是父类的子类的对象,我们调用的方法肯定是子类重写或继承的方法。

package com.yxm;public class Initail {    public static void main(String[] args) {        Animal obj1=new Animal();//父类的引用指向本类的对象        Animal obj2=new cat();//父类的引用指向子类的对象      //  cat obj3=new Animal();//子类的引用不能指向父类的对象        Animal obj4=new Dog();         obj1.eat();        obj2.eat();        obj4.eat();      //  obj4.watchDoor();//不能通过父类的引用调用子类独有的方法    }}
package com.yxm;public class Animal {    public void eat(){        System.out.println("动物具有吃东西的能力!");    }}
package com.yxm;//继承是多态的实现基础public class cat extends Animal {   public void eat(){       System.out.println("猫可以吃素。");   }}
package com.yxm;public class Dog extends Animal {    public void watchDoor(){        System.out.println("狗具有看门的能力");    }}

注意

继承是多态的实现基础
子类的引用不能指向父类的对象
不能通过父类的引用调用子类独有的方法