搜索
写经验 领红包
 > 美食

详解继承重载重写和多态的关系是什么(重载和重写与多态的关系)

导语:详解继承、重载、重写和多态的关系

详解继承重载重写和多态的关系是什么(重载和重写与多态的关系)

一提到面向对象OOP就会想到三大特性,继承、封装、多态;多态的实现主要是重载和重写实现的;多态表现为父类对象引用子类实现子类的向上转型,这样父类就能通过指向不同的子类实现不同的子类的方法,子类的方法重写或者重载父类的方法实现;同样子类向上转型被父类引用,还可以再向下转型放到子类对象

public class Animal {    public void eat(){        System.out.println(&34;);    }   public void run(){        System.out.println(&34;);    }} public class Cat extends Animal{     public void eat(){         System.out.println(&34;);    }    public void run(){        System.out.println(&34;);    }} public class Dog extends Animal{     public void eat(){         System.out.println(&34;);    }    public void run(){        System.out.println(&34;);    }} public class Main {     public static void main(String[] args) {         Animal animal = new Cat(); //向上转型        animal.eat(); //猫爱吃鱼        Cat c = ((Cat) a); //向下转型        c.eat()     //猫会跳         animal = new Dog();//向上转型        animal.eat();  //狗爱吃骨头        Cat c1 = ((Cat) a1);  //向下转型        c1.eat();  //狗会跑    } }

向上转型子类定义但是父类没定义的的方法会丢失,只能用重载、重写和继承的方法;这样减少代码的重复性,提高了扩展性;向下转型是父类对象转为子类的引用指向,但是只能转为子类对象本身的实际对象也就是cat类型的animal只能是cat不能是其他类型

所以多态特性的实现必须要有继承,子类继承父类或者接口;重载或者重写,子类重写父类的方式去实现不同的方法形式;父引用指向子类实例,实现父类引用调用子类方法。多态的特性带来的好处主要是对代码的替换(子类方式去实现方法,父类很容易切换调用不同的子类对象去调用不同的方法)、接口灵活性(通过interface定义方法签名,由不同的子类覆盖实现,子类之间完全没有相互依赖,调用的时候可以自由选择切换)

本文内容由小嫣整理编辑!