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 show(){
System.out.println("动物吃东西");
}
}
-------------------------------------------------------
public class Cat extends Animal {
public void Cat(){
}
public void show(){
System.out.println("猫吃鱼");
}
public void ww(){
System.out.println("ww");
}
}
-----------------------------------------
public class Animaltest {
public static void main(String[] args) {
Animal a=new Cat();
a.setName("加菲");
a.setAge(30);
System.out.println(a.getName()+","+a.getAge());
a.show(); //多态
// a.ww(); 编译看左,执行看右。
// 编译的时候a对象在Animal中找不到ww方法,所以编译不通过
a=new Animal(); //向上转型,访问Animal中的show方法
a.show();
Cat b=(Cat)a; //向下转型 ,访问Cat中的方法
b.ww();
//这两个转型只能存在一个。会出现强制类型转换异常
}
}
一、多态中对
成员变量:编译看左边,执行看左边。
成员方法:编译看左边,执行看右边。
二、转型
Student为子类,People为父类。
eg:Student xiaoming=new People();
向上转型 xiaoming=new People();//此时xiaoming可以调用父类的构造方法
向下转型 Student laoli=(Student xiaoming);//此时laoli可以调用子类的构造方法