abstract class B extends A implements C {
// why I have to add implementation here for add() function
}
class A{
void add(){
}
}
interface C{
void add();
}
Test.java:1: error: add() in A cannot implement add() in C
abstract class B extends A implements C {
^
attempting to assign weaker access privileges; was public
1 error
1条答案
按热度按时间5t7ly7z51#
接口的一个奇怪之处在于,它们包含的所有成员都是 * 固有 *
public
。而在类中,它们是固有的包私有的。(如:如果你没有指定访问修饰符(public
,private
或protected
)-在接口中,那么事情就是public
,在类中,它们是包私有的)。因此,
class A
中的add()
是包私有的,而interface C
中的add()
是公共的。你不能降低访问级别-如果你实现C,你的void add()
方法必须也是public
(或任何更高的访问级别,但public
已经是最高的)。如果您在
A
类中设置add()
,则一切都很好。请注意,您得到的错误是:
字符串
这真的说明了一切,不是吗?为了将来的参考,当问关于SO的问题时,你应该包括这样的东西。错误不是用火星语写的巫毒魔法。你可以阅读它们,它们往往指向问题。