zoukankan      html  css  js  c++  java
  • 关于多态性的使用

    package day01;
    /**
     * 多态:可以理解为一种事物的多种形态
     * 对象的多态性:父类的引用指向子类的对象 (或是子类的对象赋给父类的引用)
     *多态的使用:虚拟方法调用,有了对象的多态性以后,在编译期间,只能调用父类中声明的方法,但是在运行期间,实际调用的是子类重写父类的方法
     *多态的使用前提:1.类的继承关系 2.方法的重写
    *对象的多态性只使用与方法,不适用属性
    */ public class AnimalTest { public static void main(String[] args){ AnimalTest at = new AnimalTest(); at.fun(new Cat()); //这也可以new Dog ,这就是多态性的使用 } public void fun(Animal animal){ //Animal animal= new Cat(); animal.eat(); animal.shout(); } //假如说没有多态性,就只能像下面这样需要造很多方法去调用,很麻烦,所以有了多态性 // public void fun1(Dog dog){ // dog.eat(); // dog.shout(); // } // public void fun1(Cat cat){ // cat.eat(); // cat.shout(); // } } class Animal{ public void eat(){ System.out.println("动物进食"); } public void shout(){ System.out.println("动物:吃"); } } class Dog extends Animal{ public void eat(){ System.out.println("狗吃骨头"); } public void shout(){ System.out.println("汪!汪!汪!"); } } class Cat extends Animal{ public void eat(){ System.out.println("猫吃鱼"); } public void shout(){ System.out.println("喵!喵!喵!"); } }

     多态情况下的虚拟方法调用

    子类中定义了与父类同名同参数的方法,在多态情况下,将此时的父类方法称为虚拟方法,父类根据赋给它的不同子类对象,动态调用属于该子类的方法,这样的方法调用在编译期是无法确定的,因此多态的方法调用是运行时行为(也叫做动态绑定)

  • 相关阅读:
    Antlr与Regex
    c_str()
    C++ 友元
    C++ 操作符重载
    Remote 'attachhome' failed on nodes:XXX
    RAC安装GI时运行root.sh脚本结果
    clscfg.bin: error while loading shared libraries: libcap.so.1:
    RAC安装重新运行root.sh
    libXext.so.6 libXp.so.6 libXt.so.6 is needed by openmotif21-2.1.30-11.el7.i686
    向数据库中导入AWR数据
  • 原文地址:https://www.cnblogs.com/king2/p/14458330.html
Copyright © 2011-2022 走看看