一,向上转型
创建父类
public class Father{
public void sayHello(){
System.out.println("i am your father");
}
public void doSomething(){
System.out.println("make money");
}
}
创建子类
public class Son extends Father{
public void sayHello(){
System.out.println("i am a son");
}
public void eat(){
System.out.println("eat,eat,eat");
}
}
测试
public class test {
public static void main(String[] args) {
Father a = new Son();// Son 必须继承 Father
a.sayHello();
a.doSomething();
// a.eat(); // 报错
}
}
向上转型,就是用父类的引用变量去引用子类的实例
上述代码对象a就是父类引用对象。**当向上转型之后,父类引用变量可以访问子类中属于父类的属性和方法包括子类中重写的方法,但是不能访问子类独有的属性和方法。**例子中由于子类重写了父类的sayHello()方法,所以调用的sayHello()方法是子类的sayHello()方法,而调用子类的eat()方法则会报错,调用doSomething()方法不会。
二,向下转型
测试
public class test {
public static void main(String[] args) {
Father father = new Son();// Son 必须继承 Father
Son son = (Son) father;// 向下转型
// Daughter daughter = (Daughter) father; // 报错
son.sayHello();// 调用Son的sayHello方法
son.eat();
son.doSomething();
}
}
**只有当这个类是子类对象通过向上转型得到的时候才能向下转型。**向下转型的类对象可以正常的像子类对象一样使用。