Java Access Modifiers:从另一个包

时间:2016-03-02 11:22:37

标签: java class access-modifiers

如何使用该包中的公共类访问某些/另一个包中的默认类。

例如,

我的Bank package有两个班级

  1. public class Bank { ... }

  2. class Account { ... }(默认访问修饰符)

  3. 我需要使用Account访问名为package的其他Atm中的Bank

    有什么建议吗?

3 个答案:

答案 0 :(得分:0)

根据java的╔═════════╦════════════════════════════╗ ║ ItemIdx ║ Data ║ ╠═════════╬════════════════════════════╣ ║ 1 ║ 0x001122338899AABB44556677 ║ ║ 2 ║ 0xFFEEDDCC77665544BBAA9988 ║ ╚═════════╩════════════════════════════╝ 规则,

  

默认事物(类/方法/实例)不得在另一个中可见   封装

     

所以,在你的情况下,不可能通过另一个访问它   包,因为那里的默认类不可见。

     

默认事物只在相同的包中可见,只有在它定义/声明

的地方

答案 1 :(得分:0)

您无法直接从其他软件包访问此类,但您可以使用proxy pattern并通过调用Bank方法调用Account方法

答案 2 :(得分:0)

根据定义,java中类的默认访问修饰符只能从其包中访问(参见here)。

如果您有权访问源代码,则应考虑将访问级别更改为public。否则,您可以尝试通过同一包中的公共类访问该类。

package test.bankaccount;
public class Bank {
    public Account getAccount(int id) {
        //here goes the code to retrieve the desired account
    }
}

package test.bankaccount;
class Account {
    // class implementation
}

无论如何,您应该记住,访问限制总是描述应用程序的工作方式。你应该问问自己为什么一个特定的课程不公开。

如果这些类是您自己的代码,那么问问自己,您所使用的访问限制是否正确表示了您希望应用程序运行的方式。