多态
多态的前提
要有继承或者实现关系
要有方法重写(可以不方法重写,但是这种多态一般没有意义)
有父类引用指向子类对象
概述
对象在不同时刻表现出来的不同的状态 针对引用类型
编译期间的状态 运行期间的状态 为了提高代码的扩展性和可维护性。
class Animal
{
String name;
int age;
public Animal(){}
public void speak(){
System.out.println("我是父类");}
}
class Dog extends Animal{
String Color;
public void speak(){
System.out.println("我是狗类");}
}
class cat extends Animal{
String Color;
public void speak(){
System.out.println("我是猫类");}
}
public class AnimalTest{
public static void main(String[] args){
Animal a=new Dog();
a.speak();
Dog b=new (Dog)Animal();
b.speak();
}
}
多态的成员特点
成员变量
编译运行都看左边,如果运行的父类中有这个变量就不会报错,运行看左边的结果是谁
成员方法
编译看左边,运行看右边。
多态的弊端和解决方法
父类引用不能使用子类特有的方法
解决方法父类向下转型 fu a= new (fu)zi();
类型转换异常 java.lang.ClassCastExcepton:类型转换异常。出现这个异常的原因是多态没有继承 |
|