Java中的抽象类和多态的区别,Java学习笔记:多态,抽象类,接口

多态

多态概述

同一对象,在不同时刻表现出来的不同形态

多态的前提和体现:

有继承/实现关系 public class Cat extends Animal{}

有方法重写cat类中重写animal类方法

有父类引用指向子类对象Animal a=new Cat()

多态中成员访问特点

Animal a = new Cat();

访问成员变量a.age:编译和访问/输出的是父类中的成员变量

访问成员方法a.eat():编译看父类,访问/输出的是子类的成员方法(成员方法有重写)

多态优劣

AnimalOperator类

public void useAnimal(Animal a){

a.eat;

a.watchDoor;//报错

}

Animal类

public void eat(){}

Dog extends Animal类

public void eat(){}

public void watchDoor{}

main()函数

AnimalOperator a=new AnimalOperator();

Dog g = new Dog();

a.useAnimal(d);//实质上就是写Animal a=new Dog()

优势:提高程序扩展性。定义方法时将父类型作为参数,使用时用具体子类型参与操作

劣势:不能使用子类的特有功能

多态的转型

向上转型:父类引用指向子类对象Animal a = new Cat();

你可能感兴趣的:(Java中的抽象类和多态的区别)