java – 无法从其他包实现抽象类
出于某种原因,我似乎无法在定义它的包之外实现抽象类. package1中的抽象类无法在package2中的类中实现.为什么这不是合法的
Java?
package com.stackoverflow.abstraction.package1; abstract public class BaseClass { abstract Long foo(); } package com.stackoverflow.abstraction.package1; public class Implement1 extends BaseClass { @Override Long foo() { return null; } } package com.stackoverflow.abstraction.package2; import com.stackoverflow.abstraction.package1.BaseClass; /** Compiling this class will output * - Implement2 is not abstract and does not override abstract method foo() in BaseClass * - error: method does not override or implement a method from a supertype */ public class Implement2 extends BaseClass { @Override Long foo() { return null; } } 运行: 解决方法
您的两个foo方法具有默认的“包”访问权限.您的Implementation2类甚至无法调用该方法 – 因此能够覆盖它没有多大意义.
目前尚不清楚您希望他们拥有什么级别的访问权限,但最简单的方法可能是将它们公之于众.目前,您只是说package1中的调用者可以调用BaseClass.foo(),但只有package2中的调用者可以调用Implement2.foo().这显然没有多大意义.您希望谁能够访问该方法?如果您只希望类或子类中的调用者能够调用它,那么请将其保护 – 否则将其公开. 有关访问修饰符的更多详细信息,请参见section 6.6 of the Java Language Specification(和Java tutorial).特别是,在浏览各种访问修饰符后:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 作为非管理者的我们可以从西贝中学到什么
- java – JVM内存管理和垃圾回收书?
- Jhipster Registry(Eureka Server) Docker双向
- java – String压缩循环逻辑
- java – 对于Class对象的“isAssignableFrom”相
- java – Raspberry Pi 2 – 在纵向模式下移动对象
- java – 有没有办法强制Checkstyle忽略源代码中的
- 本人亲测-Setup Factory打包教程(整理并优化)
- Java EE 7 / JAX-RS 2.0: Simple REST API Authe
- java – 在VisualVm中使用IntelliJ和Debug进行性