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;
       }
    }
}