java子类和父类属性重复问题
伊谢尔伦
伊谢尔伦 2017-04-18 09:03:21
0
8
941

java 子类继承 父类, 但子类中 包含和父类相同 属性 ,给子类赋值之后,父类的相同的属性值还是空的。
类定义如下:

public class Person {

    private String name;
    private String age;

    // ignore getter and setter
}

public class Student extends Person {

    private String name;
    private String score;
    
    // ignore getter and setter
}

public static void main(String[] args){
    Student stu = new Student();
    stu.setAge("12");
    stu.setName("test");
}

debug看到


父类(Person)的name属性值是null,继承的方法是子类会覆盖掉父类相同的方法,但是这属性为什么没覆盖

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(8)
巴扎黑

親クラスの属性はプライベートであり、サブクラスも親クラスのメソッドをオーバーライドするときに、親クラスのメソッドを呼び出さないため、親クラスの属性値は空になります。

いいねを押す +0
伊谢尔伦

それらはすべてプライベートです!

いいねを押す +0
巴扎黑

同じメンバー変数は上書きされません。http://blog.csdn.net/iwaich/article/details/9126661

いいねを押す +0
黄舟

変数はオーバーライドされません

いいねを押す +0
PHPzhong

リーリー

いいねを押す +0
小葫芦

スーパーキーワードを使用する場合は、セッターメソッド本体を投稿することをお勧めします。

いいねを押す +0
左手右手慢动作

Student でメソッド a() をプログラムし、super を使用して Person クラスでそのメソッドを呼び出し、次に main メソッドで a() メソッドを呼び出すことができます。

いいねを押す +0
大家讲道理

この問題は解決されました。

タイトルの説明にいくつかの誤りがあることを指摘します:

親クラス(person)のname属性の値がnullになっていますが、継承方法としては親クラスの同じメソッドをサブクラスがオーバーライドすることになっていますが、なぜこの属性はオーバーライドされないのでしょうか?

実際のところ、私の理解によれば、「親クラスの同名の属性に対するサブクラスの属性の影響」と「親クラスの同名のメソッドに対するサブクラスのメソッドの影響」は、同じ。

実際、いわゆるサブクラスは、同じ名前の親クラスのメソッドを「オーバーライド」しますが、実際にはそれをカバーしておらず、親クラスのメソッドはまだ存在しています。デバッグベースではそれを確認できないだけです。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート