我已经看到一些引用引用了Java中称为private protected的访问修饰符(两个词在一起): private protected someMethod() { } 我发现与此有关的页面之一是 here。我的学校课上也提到了这个访问修饰符(并说它存在)。但是,使用它会导致Java语言错误。 我尝试了变量和方法,我很确定它不存在,但是我想解释一下发生了什么。是否考虑过,然后拒绝了?还是在新版本的Java中将其删除? 编辑:我不是在寻找有关 protected关键字的信息。 解决方案如下: 删除访问修饰符Jav…

2020年11月25日 0条评论 46点热度 阅读全文

以下是我的ProtectedConstructor.java源代码: package protectCon; public class ProtectedConstructor{ public int nothing; ProtectedConstructor(){ nothing = 0; } } 以下是 UsingProtectedCon.java源: package other; import protectcon.ProtectedConstructor; public class UsingProtect…

2020年9月20日 0条评论 41点热度 阅读全文

在Java中,private访问修饰符被认为是安全的,因为它在类外部不可见。然后外面的世界也不知道这种方法。 但是我认为Java反射可以用来打破这一规则。考虑以下情况: public class ProtectedPrivacy{ private String getInfo(){ return "confidential"; } } 现在从另一个类(class)我将获得信息: public class BreakPrivacy{ public static void main(String[] args) thr…

2020年6月21日 0条评论 33点热度 阅读全文

我在两个不同的包中有两个类: package package1; public class ParentClass { public void testPublic() { } protected void testProtected() { } } package package2; import package1.ParentClass; public class ChildClass extends ParentClass { void test() { ParentClass par = new Paren…

2020年5月2日 0条评论 26点热度 阅读全文

class Test { public static void main(String arg[]) { System.out.println("**MAIN METHOD"); System.out.println(Mno.VAL); // SOP(9090); System.out.println(Mno.VAL + 100); // SOP(9190); } } class Mno { final static int VAL = 9090; static { System.out.println("**ST…

2020年4月16日 0条评论 40点热度 阅读全文

我遇到一个有关抽象类访问的问题。 对于背景,我在一个通用模块中有一个抽象类。抽象类只是一些值的 setter / getter 。 abstract class BaseConfiguration { abstract var key: String? abstract var token: String? } 通用模块由另一个模块(SDK)使用。因此,在gradle中,该通用模块得以实现。 Gradle implementation project(":common") 在SDK模块内部,有一些公共(public…

2020年2月28日 0条评论 31点热度 阅读全文

class Test { public static void main(String arg[]) { System.out.println("**MAIN METHOD"); System.out.println(Mno.VAL); // SOP(9090); System.out.println(Mno.VAL + 100); // SOP(9190); } } class Mno { final static int VAL = 9090; static { System.out.println("**ST…

2020年1月13日 0条评论 31点热度 阅读全文

在Java中,是否存在何时使用每种访问修饰符(即默认(私有(private)包),public,protected和private)的明确规则,同时使class和interface并处理继承? 解决方案如下: The official tutorial可能对您有用。 ______________________________________________________________| │类别│包装│子类│子类│世界|| │││(相同pkg)│(diff pkg)│||──────────┼──────┼──…

2019年12月25日 0条评论 43点热度 阅读全文

我对某些文档使用的“私有(private)包”一词以及“默认访问”的使用感到有些困惑。程序包专用和默认访问不是保护的同义词吗? 解决方案如下: 是的,几乎一样。 protected修饰符指定成员只能在其自己的程序包中(与package-private一样)被访问,并且和可以由其在另一个程序包中的类的子类访问。

2019年12月17日 0条评论 39点热度 阅读全文

Java为什么要指定覆盖方法的访问说明符可以比覆盖方法允许更多但不能更少的访问?例如,父类(super class)中的 protected 实例方法可以在子类中公开,但不能私有(private)。 解决方案如下: 这是OOP中的基本原则:子类是父类的完整实例,因此必须至少提供与父类相同的接口(interface)。使 protected /公共(public)的东西不那么明显将违反这个想法;您可以使子类无法用作父类的实例。

2019年12月7日 0条评论 46点热度 阅读全文