Java 相同的变量名
以下两种情况在超类和子类中也有相同的变量a。如果使用这些编码样式,是否会出现任何问题?谢谢 情景1Java 相同的变量名,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
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名称。