相同的变量名称

时间:2011-12-05 02:14:21

标签: 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 meth(int b) {
            a+=b;
    }
}

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

3 个答案:

答案 0 :(得分:2)

取决于您如何将其归类为问题。它会像我相信你期望的那样工作。简而言之,这是一种不明智的做法,但课程'a'(有或没有'A')中的'this.'将永远不会被班级看到或使用由于黯然失色,B'。

答案 1 :(得分:0)

任何可能造成混淆的风格都应该避免,因为将不可避免地造成混淆。

我的建议是从int a删除class B的声明 - 让它使用a中的class A字段

答案 2 :(得分:0)

这不会明确导致错误。您正在做的是取消aclass A的访问权限,而只允许访问a中的class B