Java 通过继承访问内部类的受保护字段
我正在尝试通过访问内部类的受保护字段 在另一个内部类中继承。但我遇到了一个问题:Java 通过继承访问内部类的受保护字段,java,inheritance,inner-classes,Java,Inheritance,Inner Classes,我正在尝试通过访问内部类的受保护字段 在另一个内部类中继承。但我遇到了一个问题: package a; class A{ public class Inner{ protected int i =5; } } package b; class B{ public class BInner extends A.Inner{ dsds void te
package a;
class A{
public class Inner{
protected int i =5;
}
}
package b;
class B{
public class BInner extends A.Inner{
dsds
void test(){
System.out.println(i); // that's works fine, i
}
}
void print(){
System.out.println(new BInner().i) // but why i cant access this field from here? Compiler just says that there is protected access ...
}
}
有办法访问此字段吗?受保护的
访问修饰符意味着该字段或方法仅对类本身及其子类可用。由于类B
不扩展B.BInner
,因此它无法访问B.BInner.i
使用访问修饰符最常用的方法是使用getter/setter对,您可以在A.Inner
中声明该对(因为i
就是在这里声明的,B.BInner
将继承这些方法):
对B.BInner
对象调用getI()
将返回i
的值,由于它是public
,因此可以在任何地方使用它。您的BInner
类肯定不能正常工作。请发布代表您的问题的可编译代码。
class A{
public class Inner{
protected int i =5;
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
}
}