创建一个基本的 Java 对象 - Java 面向对象编程

标准的 Java 库提供了几千个类,可以用于用户界面设计、日期、日历和网络程序设计。尽管如此,还是需要在 Java 程序中创建一些自己的类,以便描述应用程序对应的问题域中的对象。下面看一个非常简单的 Employee 类。 class Employee { private String name; private double salary; private Date hireDay; public Employee(String n, double s, int year, int month, int day) { name = n; salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month-1, day); } public String getName() { return name; } } Employee 类的实例中有三个实例域来存放将要操作的数据, private String name; private double salary; private Date hireDay; 关键字 private 确保只有 Employee 类的自身方法能够访问这些实例域,而其它类的方法不能够读写这些域。 接下来是构造器, public Employee(String n, double s, int year, int month, int day) { name = n; salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month-1, day); } 构造器与类同名,在构造 Employee 类的对象时,构造器会运行,以便将实例域初始化为希望的状态。例如,当使用这条代码创建 Employee 类实例时: new Employee("James Bond", 100000, 1950, 1, 1); 会把实例域设置为: name = "James Bond"; salary = 100000; hireDay = January 1, 1950; 构造器与其他方法的一个重要的不同,构造器总是伴随着 new 操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。 接下来是 getName 方法: public String getName() { return name; } 在这里 getName 方法用来存取对象实例域 name,方法还可以用来操作对象实例域,如下: public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; } raiseSalary 将调用这个方法的对象的 salary 实例域设置为新值。例如: number007.raiseSalary(5); 它的结果将 number007.salary 域的值增加 5%,这个调用将执行下列指令: double raise = number007.salary * 5 / 100; number007.salary += raise; raiseSalary 有两个参数,第一个参数称为隐式(implicit)参数,是出现在方法名前面的 Employee 对象。第二个参数位于方法名后面括号中的数值,这时一个显式(explicit)参数。显式参数是明显的列在方法声明中,例如,double byPercent,隐式参数没有出现在方法声明中。在每一个方法中,关键字 this 表示隐式参数,raiseSalay 也可以写为: public void raiseSalary(double byPercent) { double raise = this.salary * byPercent / 100; this.salary += raise; } 使用 this 可以更好的将实例域与局部变量明显区别开来。

面向对象程序设计(简称 OOP)是当今主流的程序设计泛型。Java 是完全面向对象的,面向对象的程序是由对象组成,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。

面向对象将数据放在第一位,然后在考虑操作数据的算法。

类(class)是构造对象的模板和蓝图,由类构造(construct)对象的过程称为创建类的实例(instance)。

封装(encapsulation)将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。对象中的数据称为实例域(instance field),操纵数据的过程称为方法(method)。对于每个特定的类实例(对象),都有一组特定的实例域值。这些值的集合就是这个对象的当前状态(status)。封装的关键在于绝对不能让类中的方法直接访问其它类的实例域,程序仅通过对象的方法与对象数据进行交互。封装可以提高程序的重用性和可靠性。

继承(inheritance)是通过扩展一个类来建立一个新的类,这个扩展后的新类具有所扩展的类的全部属性和方法。

要想使用对象必需首先构造对象,并指定其初始状态,然后对对象应用方法。如下:

Date today = new Date();  
System.out.println(today.toString());  

Date 是 Java 标准库中的一个类,它的对象描述的是一个时间点。通过在构造器前(构造器名和类名相同)加上 new 操作符,构造了一个 Date 对象,并将其赋值给给 today 变量。然后调用 Date 类中的 toString 方法,返回日期的字符串描述,并在控制台打印。


Run