栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java什么是多态 如何实现(面向对象的多态的定义)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java什么是多态 如何实现(面向对象的多态的定义)

1、面向对象Java中关于对多态的理解:

在学习了Java的多态以后,对多态有了进一步的理解,下面通过一个例子来展示:

动物类:Pet

package polymorphism;

public class Pet {

  //写了一个call的方法,模拟动物的叫
  public void call(){
    System.out.println("我是动物,我会叫");
  }
}

动物的Cat类,继承了动物Pet类,重写call方法;

package polymorphism;

public class Cat extends Pet{
    @Override
    public void call() {
        System.out.println("猫的叫声:喵喵喵");
    }
}

动物的Dog类,继承了动物Pet类,重写call方法;

package polymorphism;

public class Dog extends Pet{
    @Override
    public void call() {
        System.out.println("狗的叫声:汪汪汪");
    }
    public void bite(){
        System.out.println("狗会咬人");
    }
}

编写一个测试启动类Application

package polymorphism;
public class Application {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.call();

        Dog dog = new Dog();
        dog.call();
    }
}

运行结果:

可以很清楚的看到,Cat类和Dog类的调用了重写的call方法和bite方法;
并没有执行父类Pet的这句代码:

public void call(){
    System.out.println("我是动物,我会叫");
  }

因此,从这里可以看出,Pet类的call方法可以看作一个接口,对于具体的动物他们所具有的行为(方法),只需要重写即可。
通俗来讲:猫和狗都是动物,他们都会叫,但是他们叫的方式不一样,所以只需要重写父类Pet方法,这便是Java中多态的体现!

2、关于继承的一些个人理解:

我们修改一下Application的代码:

package polymorphism;

public class Application {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.call();
        dog.bite();

        Pet pet = new Dog();
        pet.call()
        pet.bite();
    }
}


可以很明显的看到,父类的pet对象可以调用call方法不能调用bite方法,这是为什么呢?

子类继承父类,将会得到除父类static,final,private修饰的所有方法。(当然,不包括构造方法)Pet pet = new Dog();`是一个对象的上转型对象,即父类引用指向子类对象。方法的调用除了本类的对象可以调用,在方法重写里还可以通过父类对象的引用来调用自己;bite方法是子类Dog自己的方法,并不是继承父类的方法。父类并不能调用子类特有的方法;

多态是方法的多态,属性没有多态!
父类和子类有联系,类型转换异常!ClassCastException!
存在条件:继承关系,方法需要重写!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/775841.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号