Java 对象深拷贝 - Java 面向对象编程

Object 实现的 clone 方法对各个域进行对应的拷贝,如果对象中所有的数值域都属于数值或基本类型,这样拷贝域没有问题,如果在对象中包含了子对象的引用,拷贝的结果会使得两个域引用同一个对象,因此原始对象与克隆对象共享这部分信息。 浅拷贝 可以看到,默认的克隆操作时浅拷贝,它并没有克隆包含在对象中的内部的 Date 对象。为了实现深拷贝,必须克隆所有可变的实例域。 public Employee clone() throws CloneNotSupportedException { Employee cloned = (Employee) super.clone(); cloned.hireDay = (Date) hireDay.clone(); return cloned; }

面向对象程序设计(简称 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