/*多态
父类引变量指向子类对象
格式:父类类型 变量名 = new 子类类型( );
多态的前提:
1.子父类继承关系(实现关系)
2.父类引用指向子类对象
3.要有方法的重写
多态成员特点:
成员变量:编译看左边,运行也看左边
成员方法:编译看左边,运行看右边
静态方法:编译看左边,运行也看左边
向上转型和向下转型:
向上转型(小转大)
多态本身就是一个向上转型
向下转型(大转小)
直接创建的父类对象不能向下转型
多态的优缺点:
优点:提高可维护性
缺点:没有办法去访问子类特有的
*/
public abstract class Animal {
private int age;
private String color;
private String zz;
public String getZz() {
return zz;
}
public void setZz(String zz) {
this.zz = zz;
}
public Animal() {
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public abstract void eat(String something);
}
public class Dog extends Animal {
public void lookHome() {
System.out.println(“狗的本领是看家”);
}
@Override
public void eat(String something) {
}
}
public class Cat extends Animal {
public void catchMouse() {
System.out.println(“猫的本领是捉老鼠”);
}
@Override
public void eat(String something) {
}
}
public class test {
public static void main(String[] args) {
Animal a=new Dog();
Animal b=new Cat();
Person c=new Person();
Person d=new Person();
a.setAge(2);
a.setColor(“黑”);
a.setZz(“颜色的狗两只前腿死死的抱住”);
b.setAge(3);
b.setColor("灰");
b.setZz("颜色的猫眯着眼睛侧着头");
c.setAge(40);
c.setName("老罗");
d.setAge(25);
d.setName("老李");
c.keepPet(a,"超级大骨头猛吃");
d.keepPet(b,"吃猫粮");
}
}