现在有一个父类是animal 有子类dog
public class Animal {
int age;
public void eat(){
System.out.println("吃");
}
}
class Dog extends Animal{
int weight;
@Override
public void eat() {
System.out.println("吃吃");
}
public void guard(){
System.out.println("看家");
}
}
class Demo{
public static void main(String[] args) {
Animal an = new Dog();
an.weight = 100;//这边报错
}
}
报错是因为 an在编译期时还是animal类型的 在animal中没有weight属性 这个属性是在dog中的内存中的 an看不到weight那部分 如果现在就想访问 则需要转型
Dog d = (Dog) an;
d.weight = 100;//向下转型 将animal类型变成了dog
Dog d1 = new Dog();
Animal an1 = d1;
an1.eat();//向上转型
父类对象指向引用子类对象就是向上转型