向上转型和向下转型
向上转型和向下转型
相同点:
如果子类重写了父类的方法,调用的是子类中重写的方法。
不同点:
向上转型只能调用与父类引用中父类相同的方法,不能调用子类自定义方法;
向下转型可以调用父类的方法,也能调用子类自定义方法;
示例:
public class test01 { public static void main(String[] args) { //向上转型 Parent p=new Children(); p.eat(); p.sleep(); //p.play();不能通过编译 //向下转型 Children c=(Children) p; c.sleep(); c.sleep("hi"); c.play(); } } class Parent { //定义两个方法 public void sleep(){ System.out.println("Parent.sleep"); } public void eat(){ System.out.println("Parent.eat"); } } class Children extends Parent { //重载父类sleep()方法 public void sleep(String str){ System.out.println(str+",Children.sleep"); } //重写父类sleep()方法 @Override public void sleep() { super.sleep(); System.out.println("Children.sleep"); } //子类自定义方法 public void play(){ System.out.println("Children.play"); } }
结果:
Parent.eat
Parent.sleep
Children.sleep
Parent.sleep
Children.sleep
hi,Children.sleep

浙公网安备 33010602011771号