JAVA创建一个私有域_【package-private】包私有类的食用姿势

今天在看Java提供的NIO源码时,偶然看到该包下很多Java类没有加public限定符。

10f97a77a2f06a1e675f7aed55ba7a35.png

并且特意加上了 package-private ——包私有的注释。

回想一下,Java默认的对象作用于域确实是包私有。

包私有的概念

1、一个对象可被该对象所在包对象所引用,且不需要加 import ;

2、该对象不可被该对象所在外部包或子包所引用;

比如我在包privatepackage下新建包私有对象C:

fc739b22642fde3e72d08cd52c9553e9.png

在包privatepackage下新建对象A

f3de41a36a6a9387ed0863f72e49dc56.png

在包privatepackage.b下新建对象B

b3280fb7033e9f6325d8437c4c3493f2.png

此时我在对象A中可引用对象C,idea的代码提示很明显的表明这一点:

78596a0df07b22f1c3fa93f96b0e1223.png

而在对象B中,是无法引用对象C的:

045f742a5db03baf592f929667cbda6d.png

相信到这里你已经很清楚包私有对象是怎么一回事了,那么包私有对象有什么用?实际上很少人用到,如果不是今天偶然看到Java Nio下的源代码,我都要误以为 class 关键字前必须加上 public 关键字了,毕竟 idea 创建对象的时候,默认就会加上 public 关键字。

个人觉得,包私有对象,可以存在以下几种场景:

1、对接多个外部接口,对于类似的业务,实际上出入参数是类似但又不完全一样的。那么这种时候一个外部渠道定义一个包,该包下的请求参数就可以定义为包私有类型,虽然实际业务中我们是会加上不同的前缀和后缀。

2、作为接口提供方,不能被三方使用的对象。比如你写了个转换工具类,可以被其他团队使用,为了保证工具类的安全和健壮,有些元数据类不能被修改使用,也可以定义为包私有。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,首先需要创建一个名为 Order 的,然后在中声明一个名为 `numDishes` 的字段,表示菜品数量。 例如: ``` public class Order { private int numDishes; // 菜品数量 // 省略其他代码 } ``` 这样,就可以在 Order 创建一个名为 `numDishes` 的字段,表示菜品数量了。 ### 回答2: Java创建一个Order,我们可以定义一个Order含菜品数量。下面是一个示例代码: ```java public class Order { private int dishCount; public Order(int dishCount) { this.dishCount = dishCount; } public int getDishCount() { return dishCount; } public void setDishCount(int dishCount) { this.dishCount = dishCount; } } ``` 在上述代码中,我们定义了一个Order,并声明了一个私有的整型dishCount成员变量,用于表示菜品数量。我们还定义了一个构造方法,用于创建Order对象并传入菜品数量。另外,我们还定义了一个getter方法getDishCount,用于获取菜品数量,和一个setter方法setDishCount,用于设置菜品数量。 使用这个Order的示例代码如下: ```java public class Main { public static void main(String[] args) { // 创建一个Order对象,将菜品数量设置为5 Order order = new Order(5); // 获取并打印菜品数量 int dishCount = order.getDishCount(); System.out.println("菜品数量:" + dishCount); // 将菜品数量设置为10 order.setDishCount(10); // 再次获取并打印菜品数量 dishCount = order.getDishCount(); System.out.println("更新后的菜品数量:" + dishCount); } } ``` 在上面的示例代码中,我们创建了一个Order对象,并将菜品数量设置为5。然后,我们通过调用getDishCount方法获取并打印菜品数量。接着,我们将菜品数量更新为10,再次通过调用getDishCount方法获取并打印更新后的菜品数量。 以上就是使用Java创建一个Order,并含菜品数量的实现和示例代码。 ### 回答3: Java创建一个Order可以如下实现: ```java public class Order { private int dishCount; // 菜品数量 // 构造方法 public Order(int dishCount) { this.dishCount = dishCount; } // 获取菜品数量 public int getDishCount() { return dishCount; } // 设置菜品数量 public void setDishCount(int dishCount) { this.dishCount = dishCount; } } ``` 在Order中,我们定义了一个私有的成员变量dishCount,用于存储菜品数量。通过构造方法和getter/setter方法,可以对菜品数量进行初始化和获取、修改。 使用该Order可以进行如下操作,示例代码如下: ```java public class Main { public static void main(String[] args) { // 创建一个Order对象,菜品数量为10 Order order = new Order(10); // 输出菜品数量 System.out.println("菜品数量:" + order.getDishCount()); // 修改菜品数量为20 order.setDishCount(20); // 输出修改后的菜品数量 System.out.println("修改后的菜品数量:" + order.getDishCount()); } } ``` 运行该示例代码,会输出以下结果: ``` 菜品数量:10 修改后的菜品数量:20 ``` 通过上述代码,我们定义了一个Order,并在Main中进行了测试。我们可以根据需要调用setDishCount方法来修改菜品数量,并通过getDishCount方法来获取菜品数量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值