文章目录
用户自定义类
如何设计主力类,通常这些类没有main方法,却有自己的实践域和实例方法。要想创建一个完整的程序,应该将若干类组合在一起,其中只有一个类有main方法。
Employee类
在Java中,最简单的类定义形式为:
class ClassName
{
field1
field2
...
constructor1
constructor2
...
method1
method2
...
}
薪金管理系统的实际应用:
import java.time.*;
/**
* @author YeSuX
*/
public class EmployeeTest
{
public static void main(String[] args)
{
Employee[] staff = new Employee[3]; //创建一个可以存储3个Employee对象的staff数组
staff[0] = new Employee("Carl Cracker",75000,1987,12,15);
staff[1] = new Employee("Harry Hacker",50000,1987,10,1);
staff[2] = new Employee("Ton Tester",40000,1990,3,15);
//数组初始化
for (Employee e : staff) {
e.raiseSalary(5);
}
//每个人工资提高5%
for (Employee e : staff) {
System.out.println("name=" + e.getName() + ",salary=" + e.getSalary() + ",hireDay="
+ e.getHireDay());
}
}
}
/**
* Employee
*/
class Employee {
private String name;
private double salary;
private LocalDate hireDay; //定义LocalDate对象变量hirDay
public Employee(String n, double s, int year, int month, int day)
{
name = n;
salary = s;
hireDay = LocalDate.of(year, month, day);
}
public String getName()
{
return name;
}
public double getSalary()
{
return salary;
}
public LocalDate getHireDay()
{
return hireDay;
}
public void raiseSalary(double byPercent)
{
double raise = salary *byPercent/100;
salary += raise;
}
}
多个源文件的使用
许多程序员习惯于将每一个类存在一个单独的源文件中。例如,将Employee类存放在文件Employee.java中,将EmployeeTest类存放在文件EmployeeTest.java中。
若喜欢这样组织文件,将可以有两种编译源程序的方法。javac Employee*.java或者javac EmployeeTest.java
刨析Employee类
该类包含一个构造器和4个方法
public Employee(String n, double s, int year, int month, int day)
public String getName()
public double getSalary()
public LocalDate getHireDay()
public void raiseSalary(double byPercent)
该类中有三个实例域用来存放将要操作的数据
private String name;
private double salary;
private LocalDate hireDay;
可以用public标记实例域,但是这一做法完全破环了封装。因此,这里强烈建议将实例域标记为private。
从构造器开始
public Employee(String n, double s, int year, int month, int day)
{
name = n;
salary = s;
hireDay = LocalDate.of(year, month, day);
}
构造器与类同名。在构造Employee类的对象时,构造器会运行,以便将实例域初始化为所希望的状态。构造器总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。
构造器与类同名
每个类可以有一个以上的构造器
构造器可以有0个、1个或多个参数
构造器没有返回值
构造器总是伴随着new操作一起调用
不要在构造器中定义与实例域重名的局部变量
封装的优点
可以改变内部实现,除了该类的方法之外,不会影响其他代码
更改器方法可以执行错误检查,然而直接对域进行赋值将不会进行这些处理
注意:不要编写返回引用可变对象的访问器方法
基于类的访问权限
一个方法可以访问所属类的所有对象的私有数据。
final实例域
final修饰符大都应用于不可变类的域:如果类中的每个方法都不会改变其对象。必须确保在每个构造器执行之后,这个域的值被设置,并且在后面的操作中,不能够再对它进行修改。
class Employee
{
private final String name;
...
}
海豚~
发布了11 篇原创文章 · 获赞 26 · 访问量 3397
私信
关注
标签:Java,String,自定义,int,double,用户,构造,Employee,public
来源: https://blog.csdn.net/weixin_43389173/article/details/104102485