Tag: access specifier

为什么Java的“受保护”受保护的程度低于默认值?

在Java中,我们有四个访问说明符: public , protected ,package-private(默认)和private 。 这是众所周知的 ,对我来说不是问题。 我的问题是关于protected的命名。 如下表所示,给一个字段package-private的默认访问说明符可以防止包外的子类使用它,但是应用关键字protected实际上并不保护它 – 相反,它将它打开到子类任何包裹。 那么,为什么不protected保护东西; 为什么它比没有修饰符的限制更少 ?

为什么访问说明符不能用于Java类中方法内声明的变量?

为什么我们不能对Java类中的方法内声明的变量使用访问说明符?

什么是java中默认构造函数的访问修饰符?

我们都知道,如果我们没有专门定义构造函数,编译器会插入一个不可见的零参数构造函数。 我认为它的访问修饰符是公开的,但在处理内部类问题时,我发现也许我错了。 这是我的代码: public class Outer { protected class ProtectedInner { // adding a public constructor will solve the error in SubOuterInAnotherPackage class //public ProtectedInner() {} } } 在另一个包中有一个Outer的子类: public class SubOuterInAnotherPackage extends Outer { public static void main(String[] args) { SubOuterInAnotherPackage.ProtectedInner protectedInner = new SubOuterInAnotherPackage().new ProtectedInner(); // Error!! Can’t access the default constructor } […]

java中的默认访问说明符和受保护的访问说明符之间的区别

我试图学习java,当我通过访问说明符时,我有一个疑问,如果没有指定默认值和受保护的访问说明符,有什么区别?

如何从其他包中的类访问包私有类?

我有以下课程 Hello.java package speak.hello; import java.util.Map; import speak.hi.CustomMap; import speak.hi.Hi; public class Hello { private Hi hi; Hello(Hi hi) { this.hi = hi; } public String sayHello() { return “Hello”; } public String sayHi() { return hi.sayHi(); } public Map getMap() { return hi.getMap(); } public void clearMap() { hi.getMap().clear(); } public void discardMap() { […]

为什么要在Java中公开私有内部类成员?

如果在包含类之外仍然无法访问Java中私有内部类公共成员的原因是什么? 或者可以吗? public class DataStructure { // … private class InnerEvenIterator { // … public boolean hasNext() { // Why public? // … } } }