java用户自定义类型_Java——对象与类(用户自定义类)

文章目录

用户自定义类

如何设计主力类,通常这些类没有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;

...

}

42e15c3f43487069f83540bb398acfb5.png

de638df49f1d5a3342eecff86bcb011e.png

海豚~

发布了11 篇原创文章 · 获赞 26 · 访问量 3397

私信

关注

标签:Java,String,自定义,int,double,用户,构造,Employee,public

来源: https://blog.csdn.net/weixin_43389173/article/details/104102485

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值