另外,对于存在可变域的类,在clone方法中需要对这些可变域进行拷贝(深拷贝)。
注:Object 类本身不实现接口 Cloneable,所以在类为 Object 的对象上调用 clone 方法将会导致在运行时抛出异常。
Cloneable接口并没有定义任何方法,它只是作为一个标记,表面要进行克隆处理。
内部类:
1.成员内部类
简述:作为外部类的一个成员存在,与外部类的属性、方法并列。可以在外部类方法中实例化内部类对象来访问内部类方法。
成员内部类的对象有一个隐式引用,它引用了实例化该内部对象的外部类对象。通过这个指针,可以访问外部类对象的任何域和
方法。 但内部类不能定义静态成员(静态内部类除外)。
特殊语法:
外部类引用表达式OuterClass.this;
内部对象构造器:outerObject.new InnerClass(parameters);
注: 在外部类的作用域之外,则可以用OuterClass.InnerClass来引用内部类。
语法格式:
new SuperType(construction parameters)
{
inner class methods and data
}
SuperType是接口,则内部类就要实现这个接口;SuperType是一个类,则内部类就要扩展它。
3.静态内部类:使用内部类只是为了隐藏,可以将内部类声明为static,取消对外部类的引用。可以将它看作外部类的静态成员。
4.局部内部类:
在一个方法中定义局部类。不能用public或private访问说明符进行声明。它的作用域被限定在声明这个局部类的块中。
并且除了这个方法之外,没有其他的方法知道局部内 部类的存在,但是可以用外部类对象调用该方法来间接访问内部类。在
内部类中可以访问内部类的局部变量(即方法内的变量),但是变量必须是final的。
摘自 Seiyagoo