接口(interface)是否只能在相同的程序包和子程序包中访问?

我用默认修饰符定义了一个接口(interface):

package com.mycompany.myapp.dao;

import java.io.Serializable;

interface BaseDao<T, Id extends Serializable> {
    public void create(T t);
    public T readById(Id id);
    public void update(T t);
    public void delete(T t);
}

现在,我有一个子包,我想在其中定义一个实现BaseDao的类。所以我写了这段代码:
package com.mycompany.myapp.dao.jpa;

import java.io.Serializable;

public class BaseDaoJpa<T, Id extends Serializable> implements BaseDao<T, Id> {
...
}

但是我得到这个错误:



那么这是Java对接口(interface)的限制还是我做错了方法?

谢谢

最佳答案

在Java中,没有“子程序包”之类的东西。不要被这些点所迷惑。 com.mycompany.myapp.daocom.mycompany.myapp.dao.jpa是两个相互独立的独立软件包。

因此,回答您的问题:不,不可能使接口(interface)仅对子程序包可见。您可以公开您的界面,但随后所有其他软件包都可以看到该界面。

10-02 09:12