商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
您的位置:首页 > 技术频道 > 正文

再读Think in Java-高级篇



    二,复用类
    1,java代码的复用有两种方法,第一种非常简单:在新的类里直接创建旧类的对象,这被称为合成(compostion),因为新的类是由旧的类合成来的,所以你只是复用了代码的功能。第二种方法比较神奇,它会创建一个新的,与原来那个类同属于一类型的类,这种做法被称为继承(inheritance) 合成的语法:合成很简单,你只要把对象的reference直接放到新的类里面就行了,先前我们讲过reference会被初使化为null,如果这个时候你去调用这个对象的方法,就会得到异常。如果你想为reference初始化,你可以在以下时间进行:
    (1),在定义对象的时候,在调用构造函数前,他们已经被初使化完毕了。
    (2),在这个类的构造函数里。
    (3),在即将使用那个对象前,如果碰到创建这个对象代价太高,或者不是每次都需要创建对象的时候,这种做法就能降低程序的开销了。下面这段代码演示了在三种情况下实例化对象,
class Cups{ private String s = new String (“hello”);// 在定义对象的时候 private String t; private String s1; Cups(){ t = new String(“constructed”);//构造函数里定义 } public String toString(){ if (s1 == null){ s1 = new String (“welcome”);//用到的时候 } return s1; } }
    对于Cups类的toString 方法,所有非primi tive类型的类都有一个toString方法,当编译器需要一个String却得到一个对象的时候,就会调用对象的这方法。s这样派生类就有了基类的全部成员和方法。现在你要创建一个派生类的对象已经不是一个类的事情了,他会涉及到两个类(基类和派生类).实际上当你创建一个派生类的对象的时候,这里面还有一个基类的子对象.这个子对象和基类创建的对象没有什么两样。

    java会用派生类的构造函数自动调用基类的构造函数,其构造的顺序为从基类向外发展,在基类的构造函数没有参数的情况下,即便是你不写构造函数,派生类会去调用默认的构造函数,但是如果基类构造函数带有参数怎么办?有办法:通过在派生类构造函数里使用super(参数)调用基类构造函数即可.
1 2 3 4
【内容导航】
第1页: 隐藏实现 第2页: 复用类
第3页: 用合成还是继承 第4页: final关键词
©版权所有。未经许可,不得转载。
[责任编辑:赵恒]