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、静态代码块:

 

 

 

posted @ 2024-10-16 22:56  AlphaGeek  阅读(53)  评论(0)    收藏  举报