方法可以重写,变量可以吗

来源:9-2 Java 中的方法重写

慕标1072551

2020-09-07 01:47

测试类:

public class Initail {
    public static void main(String[] args) {
        Phone phone = new Phone();
        SmartPhone smartPhone = new SmartPhone();

        phone.call();
        smartPhone.call();

        phone.printTarget();
        smartPhone.printTarget();
    }
}

父类

public class Phone {
    String target = "me";
    public void call(){
        System.out.println("You call to "+this.target);
    }
    public void printTarget(){
        System.out.println(this.target);
    }
}

子类

public class SmartPhone extends Phone {
    //String target = "notme";
    //不写这一行,this.target 为父类中的me
    public void call(){
        System.out.println("You call to "+this.target);
    }
    public void printTarget(){
        System.out.println(this.target);
    }
}

此时运行smartPhone.printTarget()的结果为me,在该类里没有target变量,它却识别到了父类里的target,但如果去掉注释,他就会使用子类的target,这算是一种重写吗?按理说不可以定义重名的变量,那么是重写了(子类有target变量,被覆写为notme),还是说目前的子类中没有target变量,变量是父类的呢?(类似于子类没有target存在时,target 就相当于是 super.target)


写回答 关注

2回答

  • 慕仙7356912
    2021-01-04 11:41:16

    是一种重写

    慕仙7356...

    就像是改变了参数值

    2021-01-04 11:43:08

    共 1 条回复 >

  • weixin_慕无忌7554845
    2020-09-14 11:39:08

    变量不可以重写

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530653 学习 · 6091 问题

查看课程

相似问题