Java中权限修饰符和代码块理解和细节注意
1、概念

2、

3、特例理解:
Java中,实际开发中成员变量一般都私有,方法都公开。但是有一种特例,如果方法中的代码是抽取其他方法中的共性代码,则这个方法一般也私有。 如何理解这种特例?

在Java开发中,成员变量一般私有,这是因为类的内部数据应该封装起来,外部不能直接访问,必须通过**公开的方法(getter和setter)**来操作数据,从而保持类的封装性和安全性。
至于方法的访问修饰符,通常来说,**公开的方法(public)是为了让外部类能够调用,提供一些对外的功能接口。而有些私有的方法(private)**则是为了辅助这些公开方法的实现,帮助简化代码结构。
特例的理解:
当我们发现一个公开的方法中,某些代码在多个地方重复出现时,我们通常会将这部分代码提取出来,放入一个新方法中。
这个新方法只是在类内部被多个方法复用,而不是给外部使用的,所以我们将它定义为私有的(private),因为它不需要也不应该对外公开。
例子:
假设我们有一个类Order,它有一个公开方法processOrder(),这个方法处理订单,但我们发现处理订单时,有一部分是计算税金的代码,可能在多个方法中都会用到。
初始代码:
public class Order { public void processOrder() { // 一些处理订单的代码... double tax = calculateTax(); // 计算税金 // 继续处理订单... } public void cancelOrder() { // 取消订单的代码... double tax = calculateTax(); // 再次计算税金 // 继续取消订单... } // 计算税金 public double calculateTax() { // 假设税率是10% return orderAmount * 0.1; } }
在上面的例子中,calculateTax()是公开的,但实际上它只是为了帮助processOrder()和cancelOrder(),而外部不需要直接调用它。
为了遵循**“最少暴露”原则,这个方法应设置为私有**,避免外部类误调用它。
优化后的代码:
public class Order { public void processOrder() { // 一些处理订单的代码... double tax = calculateTax(); // 计算税金 // 继续处理订单... } public void cancelOrder() { // 取消订单的代码... double tax = calculateTax(); // 再次计算税金 // 继续取消订单... } // 私有方法,只供类内部使用 private double calculateTax() { // 假设税率是10% return orderAmount * 0.1; } }
总结:
这种特例就是私有方法用于内部复用代码,避免代码重复。这些私有方法只是在类的内部被调用,不需要暴露给外部,因此是私有的,而公开的方法则是供外部调用的对外接口。
这种设计能让代码结构更清晰,同时也提高了代码的安全性和可维护性。
4、代码块的三种类型

局部代码块:写在方法里的代码块,作用是用来提前结束变量的生命周期;
构造代码块:写在方法外,类里面的构造代码块;
静态代码块:加上static,静态进行修饰的代码;

可以把重复的代码抽取出来,就可以写在构造代码块当中。
当我们需要创建本类对象,Student对象时,他会优先于构造方法执行。



这种构造代码块的写法,已经渐渐淘汰了,原因就是因为他不够灵活。
5、如下这种写法,见到了也要知道含义。


6、静态代码块:





浙公网安备 33010602011771号