[JAVA] 4. Java中的类

初尝类定义

public class TextBox {
    public String text;
    public void setText(String text){
        this.text = text;
    }
    public void clear(){
        this.text=""; // text="";
    }
}

这里的clear方法,由于没有形参,不存在歧义,所以可以不用this.,即注释中的形式。tips:在python中这样可是不行的哟,一定要加上self.

在Java10之后已经支持var了,即可以动态识别类型,但是在一些情况下不可以使用。

封装

是一个区别面向对象和面向过程编程的基本要素。

当要计算一个员工工资的时候,如果直接在main方法中,将运算过程平铺直叙的写出来,就是面向过程的。

当事先定义了一个类之后,通过实例化和调用对象中的计算方法,则是一种面向对象的编程模式。

**Employee.java**
public class Employee {
    public int baseSalary;
    public int hourlyRate;

    public int calculateWage(int extraHours) {
        return baseSalary + (hourlyRate * extraHours);
    }
}
**Main.java**
public class Main {
    public static void main(String[] args){
        var employee = new Employee();
        employee.hourlyRate=20;
        employee.baseSalary=1000;
        int wage = employee.calculateWage(10);
        System.out.println(wage);

    }
}

getter&setter

可以通过IDEA进行快速的定义,当指针放在变量名上之后,摁下ALT+ENTER,就会发现IDEA的智能提示,beautiful。然后,根据提示快速创建getter,setter

创建之后,再个性化定义其中的逻辑。

``java
public class Employee {
private int baseSalary;
private int hourlyRate;

public int calculateWage(int extraHours) {
    return getBaseSalary() + (getHourlyRate() * extraHours);
}

public int getBaseSalary() {
    return baseSalary;
}

public void setBaseSalary(int baseSalary) {
    if(baseSalary<=0)
        throw new IllegalArgumentException("基础工资应为正数。");
    this.baseSalary = baseSalary;
}

public int getHourlyRate() {
    return hourlyRate;
}

public void setHourlyRate(int hourlyRate) {
    if(hourlyRate<=0)
        throw new IllegalArgumentException("工作时长应为正数。");
    this.hourlyRate = hourlyRate;
}

}


## 降低耦合
通过对类外不需要的函数进行声明私有,降低对外接口数量,同时降低bug出现时的修改难度。

public-->private

## 构造器
对员工类进行构造,并且通过setter初始化私有变量。
```java
    public Employee(int baseSalary, int hourlyRate){
        setBaseSalary(baseSalary);
        setHourlyRate(hourlyRate);
    }

这里的权限声明为public,或者不写,或者protected,均可使用,(但是理论上应该用哪个,犹未可知)。

安全重构

在IDEA中,如果要将一个函数,安全转移到另一个类中(或者一个新的类中),可以通过Refactor中的move...进行操作。

猜你喜欢

转载自www.cnblogs.com/modai/p/12741010.html