1.多态概述
同一个对象,在不同时刻表现出来的不同形态。
多态的前提和体现 :有继承/实现关系;有方法重写;有父类引用指向子类对象。
2. 多态的好处与弊端
好处:提高程序的扩展性。
弊端:不能使用子类的特有成员。
3.多态中的转型
向上转型:父类型 对象名=new 子类名
向下转型:子类型 对象名 = (子类型)父类引用;
4.代码演示
//动物类
public class Animal {
private String name;
private int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void eat(){
System.out.println("动物吃东西");
}
}
//猫类
public class Cat extends Animal{
public Cat() {
}
public Cat(String name, int age) {
super(name, age);
}
@Override
public void eat(){
System.out.println("猫爱吃大米);
}
}
//狗类
public class Dog extends Animal {
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
@Override
public void eat(){
System.out.println("狗爱吃馒头");
}
}
//测试类
public class AnimalDemo {
public static void main(String[] args) {
Animal a=new Cat();//无参
a.setName("白猫");
a.setAge(6);
System.out.println(a.getName()+a.getAge());
a.eat();
a = new Cat("白猫",5);//有参
System.out.println(a.getName()+a.getAge());
a.eat();
Animal b=new Dog();
b.setAge(10);
b.setName("旺财");
b.eat();
b=new Dog("旺财",10);
System.out.println(b.getName()+b.getAge());
b.eat();
}
}