4
回答
java中更改子类同名成员变量,为什么父类成员变量也会改变
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

public class B extends A {

    public B(String password) {
        super(password);
        this.password = "22";
        System.out.println("子类成员变量:"+this.password);
        System.out.println("父类成员变量:"+super.password);
    }
    
    public static void main(String[] args) {
        @SuppressWarnings("unused")
        B b = new B("11");
    }
}
class A{
    protected String password;
    public A(String password) {
        this.password = password;
    }
}

 

 

输出:

子类成员变量:22
父类成员变量:22

 

 

 

 

 

举报
zdg39
发帖于3个月前 4回/79阅

你这子类 的成员变量不是继承来的吗,又不是子类特有的 

--- 共有 1 条评论 ---
zdg39嗯嗯知道了,谢谢 之前被子类继承父类后拥有子+父误导了,以为产生了新变量 3个月前 回复

请看同名的情况。为 子类 B 添加一个和父类 A 同名的成员变量 password, 结果就不同了吧?

子类成员变量:22
父类成员变量:11

public class B extends A {
	//此处,为子类添加一个和父类同名的成员变量
	private String password; 

    public B(String password) {
    //调用父类的构造方法,将创建子类的参数值,传给父类的成员变量    
        super(password); /
    // 以字符串"22" 赋值给子类的成员变量     
        this.password = "22";
    //结果,子类成员变量的值,一定是 "22"
        System.out.println("子类成员变量:"+this.password);
    //父类的成员变量,是创建子类时所接受的参数值,由17行得知,应当是"11"
        System.out.println("父类成员变量:"+super.password);
    }
    
    public static void main(String[] args) {
        @SuppressWarnings("unused")
        B b = new B("11");//用参数值"11"创建子类
    }
}
class A{
    protected String password;
    public A(String password) {
        this.password = password;
    }
}

 

--- 共有 1 条评论 ---
zdg39是的 3个月前 回复
顶部