复制代码
1 import java.util.Date;
2 public class Test extends Date
3 {
4 public void test()
5 {
6 System.out.println(super.getClass().getName());
7 }
8 public static void main(String[] args)
9 {
10 new Test().test();
11 }
12 }
复制代码
输出:Test
有没有觉得很奇怪?输出的竟然是Test,其实一点也不奇怪,我们调用的getClass()是Object的,且它不能被重写,返回的是类运行时的对象,在代码中运行时的类是Test,虽然Test继承与Date,但是如果我们想返回的是Date类,那么我们运行时的对象应该是Date:Date date = new Date();,现在运行时的类就是Date,返回的就是Date。
有一个Car类
Car c1 = new Car();
Car c2 = c1;
这两句事实上只创建了一个对象。只不过c1和c2指向了同一个对象。
如果上面的两句改为:
Car c1 = new Car();
Car c2 = c1.clone();
那么就有了两个对象,而且这两个对象的内容是一样的。(所有的属性值相同)