一、多态的概述
什么是多态:
同一个对象,在不同时刻表现出来的不同形态
多态的前提:
要有继承或实现关系
要有方法的重写
要有父类引用指向子类对象
二、多态中成员访问特点
成员变量:
编译看父类,运行看父类
成员方法:
编译看父类,运行看子类
代码如下(示例):
动物类
public class Animal{
public int age=40;
public void eat(){
System.out.println("动物吃东西");
}
}
猫类
public class Cat extends Animal{
public int age=20;
public int weight=10;
@Override
public void eat(){
System.out.println("猫吃鱼");
}
public void playGame(){
System.out.println("猫捉迷藏");
}
}
测试类
public class AnimalDemo{
public static void main(String[] args){
//有父类引用指向子类对象
Animala=new Cat();
System.out.println(a.age);
//
System.out.println(a.weight);
a.eat();
//
a.playGame();
}
}
三、多态中的转型
向上转型:
父类引用指向子类对象就是向上转型
向下转型:
格式:子类型对象名=(子类型)父类引用;
代码如下(示例):
动物类
public class Animal{
public void eat(){
System.out.println("动物吃东西");
}
}
猫类
public class Cat extends Animal{
@Override
public void eat(){
System.out.println("猫吃鱼");
}
public void playGame(){
System.out.println("猫捉迷藏");
}
}
测试类
public class AnimalDemo{
public static void main(String[] args){
//多态
//向上转型
Animala=new Cat();
a.eat();
//a.playGame();
//向下转型
Cat c=(Cat)a;
c.eat();
c.playGame();
}
}
总结
好处就是提高程序的扩展性,定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作;不好的地方就是不能使用子类的特有成员。