如果这个问题可能一直被问到,我很抱歉,但我搜索过,找不到足够的答案.
如果私有成员/字段被公共成员/方法访问,如何禁用它们的继承?
所以考虑一下:
public class A {
private MemberA a = new MemberA();
public void foo(TypeA x) {
a.methodCall(); //access to a
}
}
public class B extends A {
private MemberB b = new MemberB();
public void foo(TypeB x) {
b.methodCall();
}
}
Run Code Online (Sandbox Code Playgroud)
如果你点击调试器,你会看到,B有一个类型为MemberA的字段.这符合Java规则,因为如果公共成员可以访问私有成员,那么它将被继承.但是在B中,"a"是无用的,只是占用内存 - 即使你没有在B的构造函数中实例化它,因为B调用它的超级构造函数并且它必须在A中实例化,因为它非常适用于a.
我需要为A和B设置相同的方法名称,并且它们必须是公共的,但由于它们从根本上做了不同的事情但是共享共同的逻辑B需要从A继承.
所以基本上,我需要知道如何重载和重写方法同时.或重复代码.该怎么办?
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |