向上转型

我们在写继承的时候,经常会用到向上转型。那么在创建对象的时候,向上转型会调用谁的方法或变量呢,看下面的例子

package cn.com;
class BaseClass{
    public int book = 6;
    public void base(){
        System.out.println("父类的普通方法");
    }
    public void test(){
        System.out.println("父类被覆盖的方法");
    }
}

public class SubClass extends BaseClass {
    public String book = "java基础书";
    public void test(){
        System.out.println("子类覆盖父类的方法");
    }
    public void sub(){
        System.out.println("子类的普通方法");
    }

    public static void main(String[] args) {
        BaseClass abc = new SubClass();
        System.out.println(abc.book);
        abc.test();
        abc.base();
//      执行下面这一句会报错
//      abc.sub();
    }
}

输出结果:

6
子类覆盖父类的方法
父类的普通方法

得到结论。向上转型,是子类继承父类,并创建对象的过程。语法为“父类 对象名 = new 子类构造器”,如  父 对象 = new 子类();

子类继承后,只能调用父类中已有的方法,不能调用子类独特的方法。如果子类中已重写,则调用重写的方法。

你可能感兴趣的:(java)