以下两种情况在超类和子类中也有相同的变量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;
}
}
答案 0 :(得分:2)
取决于您如何将其归类为问题。它会像我相信你期望的那样工作。简而言之,这是一种不明智的做法,但课程'a
'(有或没有'A
')中的'this.
'将永远不会被班级看到或使用由于黯然失色,B
'。
答案 1 :(得分:0)
任何可能造成混淆的风格都应该避免,因为将不可避免地造成混淆。
我的建议是从int a
删除class B
的声明 - 让它使用a
中的class A
字段
答案 2 :(得分:0)
这不会明确导致错误。您正在做的是取消a
中class A
的访问权限,而只允许访问a
中的class B