这个问题在这里已经有了答案:Whatisthedifferencebetweenpublic,protected,package-privateandprivateinJava?(30个回答)关闭2年前。我正在尝试学习java,但当我通过访问说明符时,我有一个疑问。如果没有指定默认值和java中protected访问说明符有什么区别? 最佳答案 这个Javatutorial可能对你有用。Modifier|Class|Package|Subclass|Worldpublic|Y|Y|Y|Yprotected|Y|Y|Y|Nnomodi
这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:ProtectedinInterfaces在Java中,为什么我不能在接口(interface)中使用protected方法?因为根据Java规范protectedaccess(denotedbythekeywordprotected)-afieldormethodaccessibletoanytypeinthesamepackage,andtosubclassesinanypackage.如果我必须使用接口(interface),我将实现它并覆盖方法。因此,如果我要实现类可以访问这些方法的位置,因为可以在任
我知道接口(interface)必须是公共(public)的。但是,我不希望那样。我希望我实现的方法只能从它们自己的包中访问,所以我希望我实现的方法受到保护。问题是我无法保护接口(interface)或实现的方法。什么是变通方法?是否有与此问题相关的设计模式?根据Java指南,抽象类也无法完成这项工作。 最佳答案 阅读this.“公共(public)访问说明符表示该接口(interface)可以被任何包中的任何类使用。如果您不指定该接口(interface)是公共(public)的,那么您的接口(interface)将只能被定义在与
假设您在Activity中将android:onClick="doClick"定义为protectedvoiddoClick(Viewview){}documentation声明ThisnamemustcorrespondtoapublicmethodthattakesexactlyoneparameteroftypeView.这是底层Class.getMethod()方法的给定要求,它只找到公共(public)方法作为documentation声明它ReturnsaMethodobjectthatreflectsthespecifiedpublicmembermethodofthec
我在package1中有一个名为A的类,在package2中有另一个名为C的类。C类扩展了A类。A有一个实例变量,声明如下:protectedintprotectedInt=1;这是A类的代码packagepackage1;publicclassA{publicintpublicInt=1;privateintprivateInt=1;intdefaultInt=1;protectedintprotectedInt=1;}这是C类的代码:packagepackage2;importpackage1.A;publicclassCextendsA{publicvoidgo(){//reme
我正在阅读一些Java文本,文本说我们只能为类和接口(interface)应用public或default访问修饰符。因此,如果我们声明如下是编译错误:privateclassA{}或protectedclassA{}我只是好奇为什么一个类或接口(interface)不能接收private或protected访问修饰符? 最佳答案 private表示“仅在封闭类中可见”。protected表示“仅在封闭类和任何子类中可见,并且在封闭类的包中的任何位置可见”。因此,private在应用于顶级类时没有任何意义;protected定义的第
为什么在Java中,带有“protected”修饰符的成员不仅可以被同一个类和子类访问,而且可以被同一个包中的每个人访问?我想知道语言设计的原因,而不是实际应用程序(例如,测试) 最佳答案 此设计基于包是适当的单元,由一个内部一致的团队维护和发布的想法;继承关系与谁维护和何时发布什么关系不大。 关于java-为什么Java中的"protected"修饰符允许访问同一包中的其他类?,我们在StackOverflow上找到一个类似的问题: https://stac
什么是更好的做法和原因:通过protected字段或私有(private)字段上的公共(public)getter访问基类变量。(无论如何,getter都会公开) 最佳答案 如果无论如何都会有一个公共(public)setter/getter,你为什么要比绝对必要的更广泛地公开这个领域本身?这意味着它可以立即被子类写入(除非它是final开始的)。我个人喜欢我的所有字段都是私有(private)的:它在API和实现之间提供了更清晰的分离。我认为父类(superclass)和子类之间的关系类似于调用者和被调用者的关系——对底层实现的更
我要考B类:classB:A{overridefuninit(){//doworkhere}}classA{protectedfuninit(){}//willbecalledbyinternallogic}在Java中调用没有问题:b.init()在测试方法中(测试类与测试对象在同一个包中),但是在Kotlin编译器报错:Cannotaccess'init':itisprotectedin'B'@Testfun`checksinit`(){valb=B()b.init()//assertworkdone}为什么它不起作用?如何解决这个问题(我想避免公开方法)?
Kotlin有几个visibilitymodifiers以及extensionfunctions.文档指出扩展是静态解析的。但这对于扩展函数中类成员的可见性意味着什么?让我们考虑以下人为的例子:classA{protectedvala="Foo"}funA.ext(){print(a)}//Raises:Cannotaccess'a':itis'protected'in'A'classB{valb="Bar"}funB.ext(){print(b)}//Compilessuccessful代码不会编译。扩展类时似乎无法访问protected成员。静态解析是否意味着扩展函数是在Java中