多态变量和向上转型
多态
多态是值不同类的对象在调用同一个方法是所呈现处多种不同的行为
多态使用条件:
要有继承或者实现的关系
要有方法重写
要有父类引用转向子类对象
作用:消除了类之间的耦合关系,提高了程序的可扩展和可维护性能,耦合指的是代码之间的关联程度
语法格式
父类类名 引用名称 = new 子类类名();
案例
定义父类Animal,类中有父类方法shout()定义两个子类Dog和Cat继承Animal类在子类中重写父类方法输出shout()方法
定义animal类
public class Animal(){
public void shout(){
System.out.println("动物叫声")
}
}
定义Dog子类
public class Dog exdends Animal{
public void shout(){
System.out.println("狗叫")
}
}
定义Cat子类
public class Cat exdends Animal{
public void shout(){
System.out.println("猫叫")
}
}
测试类
public class Test(){
父类引用指向子类对象
Anilal a1 = new Dog()
Anilal a2 = new Cat()
a1.shout();
a2.shout();
}
运行结果
子类重载父类方法,父类中不存在该方法,向上转型后,父类是不能引用该方法的
多态的成员访问特点:
成员变量:编译看父类,运行看父类
成员方法:编译看父类,运行看子类
对象的类型转换
对象的类型转换分为向上转型和向下转型
向上转型:
父类引用指向子类对象
父类类名 对象名 = new 子类类名;
向下转型
由父类引用转成一个对应的真实的子类对象
格式 目标对象类型 对象名 = (目标对象类型)被转换的引用
一定要确保转换的类型相同。否则会发生类型转换异常