Java 相同的变量名

Java 相同的变量名,java,Java,以下两种情况在超类和子类中也有相同的变量a。如果使用这些编码样式,是否会出现任何问题?谢谢 情景1 public class A { int a; void meth(int b) { a+=b; } } public class B extends A { int a; void meh2(int b) { a+=b; } } 情景2 public class A { int a; void m

以下两种情况在超类和子类中也有相同的变量a。如果使用这些编码样式,是否会出现任何问题?谢谢

情景1

public class A {
    int a;
    void meth(int b) {
        a+=b;
    }
}

public class B extends A {
    int a;
    void meh2(int b) {
        a+=b;
    }
}
情景2

public class A {
    int a;
    void meth(int b) {
            a+=b;
    }
}

public class B extends A {
    int a;
    void meh2(int b) {
        a+=b;
    }
    B(int a) {
        this.a=a;
    }
}

取决于你如何将其归类为问题。我相信它会像你期望的那样起作用。简言之,这是一种不明智的做法,但类“
a
”(带或不带“
this.
”)中的“
a
”)将永远不会被类“
B
”看到或使用

任何可能造成混乱的风格都应该避免,因为它不可避免地会造成混乱


我的建议是从
class B
中删除
int a
的声明-让它使用
class a
中的
a
字段,这不会明确导致错误。您正在做的是取消对
a类
a
的访问权限,而只允许对
B类
a
的访问权限是的,我认为这是一个问题。我避免了变量阴影(继承中的变量名相同),因为它在使用中变得非常混乱!我的观点是,在这些情况下避免使用相同的var名称。