美文网首页
Java 父类与子类同名的成员变量

Java 父类与子类同名的成员变量

作者: 一方乌鸦 | 来源:发表于2018-05-24 23:25 被阅读268次

先看个例子:

public class Test {
    public static void main(String[] args) {
        B b = new B();
        b.b();
    }
}
class A {
    String a = "a";
    A () {
        System.out.println("a this.a: " + this.a);
    }
    void visit() {
        System.out.println("this.getClass(): " + this.getClass());
    }
}
class B extends A {
    String a = "b";
    B() {
        System.out.println("b super.a: " + super.a);
        System.out.println("b this.a: " + this.a);
        System.out.println("super.equal(this): " + super.equals(this));
    }
    void b() {
        visit();
    }
}

打印的结果是:

a this.a: a
b super.a: a
b this.a: b
super.equal(this): true
this.getClass(): class B

结论:

  1. 成员变量不具有多态,子类与父类的相同描述的成员变量分开存储,互不干扰,也没有覆盖。如在父类中的 a 和子类中的 a ,即同一个对象的不同存储空间。
  2. 在调用父类构造器的时候,没有创建父类对象,只执行了一次 new 指令,用来创建子类对象。super这个关键字只不过是访问了这个空间特定部分的数据(也就是专门存储父类数据的内存部分)。

相关文章

  • 继承使用注意

    子类不能定义与父类同名的成员变量 子类可以重写父类的成员方法(覆盖父类的实现) 可以用super指针调用父类的实现...

  • 继承与接口

    派生类生成一个对象时,基类与子类在内存中的排列状态: 当子类中定义的成员变量与父类的成员变量同名时,由于构造函数是...

  • Java07继承

    继承 关键字extends子类继承父类,子类拥有父类的成员变量和方法。Java中所有的类最终都继承与java.lo...

  • java相关零碎知识

    java初始化,加载顺序: 父类的静态成员变量,父类静态代码块,子类的静态成员变量,子类的静态代码块,父类非静态成...

  • Java 父类与子类同名的成员变量

    先看个例子: 打印的结果是: 结论: 成员变量不具有多态,子类与父类的相同描述的成员变量分开存储,互不干扰,也没有...

  • 2022-05-15程序员周记

    成员变量继承 Java中的子类和父类都有相同命名的变量,当左边的类是父类时则获取父类的变量值,若是子类则使用子类的...

  • Java成员覆盖

    当子类覆盖父类的成员变量时,父类方法使用的是父类的成员变量,子类方法使用的是子类的成员变量。 这个听起来很容易理解...

  • 访问子类对象的实例变量

    子类的方法可以访问父类的实例变量,这是因为子类继承父类,就会获得父类的成员变量和成员方法,父类的方法不能访问子类的...

  • 继承的实例变量不能被覆盖

    1.父类的变量(实例变量和静态变量)能被子类的同名变量隐藏 2.父类的静态方法被子类的同名静态方法隐藏 3.父类的...

  • java相关

    1、Java向上转型之后调用子类的同名变量/方法的问题 总结:方法可重写,属性不可重写。父类的方法被子类覆盖,父类...

网友评论

      本文标题:Java 父类与子类同名的成员变量

      本文链接:https://www.haomeiwen.com/subject/yfuejftx.html