- (略)
- (略)
- (略)
- (略)
- 创建两个带有默认构造器(空参数列表)的类A和类B。从A中继承产生一个名为C的新,并在C内创建一个B类的成员。不要给C编写构造器。创建一个C类的对象并观察其结果。
package net.mindview.reusing; public class A { public A(){ System.out.println("A"); } } package net.mindview.reusing; B { B(){ System.B C extends A { B b = new B(); static void main(String[] args) { C c = C(); } }
- (略)
- (略)
- (略)
- 创建一个Root类,令其含有名为Component1、Component 2、Component3的类的各一个实例(这些也由你写)。从Root中派生一个类Stem,也含有上述各“组成部分”。所有的类都应带有可打印出类的相关信息的默认构造器
Root { private Component1 c1 = Component1(); private Component2 c2 = Component2(); private Component3 c3 = Component3(); Root() { System.Root); System.Root->c1Root->c2Root->c3); } } package net.mindview.reusing; Component1 { Component1() { System.Component1 Component2 { Component2() { System.Component2 Component3 { Component3() { System.Component3 Stem extends Root { Component3(); Stem() { System.RootChildStem->c1Stem->c2Stem->c3); } main(String[] args) { Root t = Stem(); } }
- (略)可参考总结中的第5点,使用代理模式。
- (略)
- (略)
- (略)
- 在Car.java中给Engine添加一个service(),并在main()中调用该方法。
Engine { start(){} rev(){} stop(){} Service() { System.Engine.Service); } } Wheel { void inflate(int psi){} } Window{ rollup(){} rolldown(){} } Door{ public Window window = Window(); open(){} close(){} } Car { public Engine engine = Engine(); public Wheel[] wheels = new Wheel[4]; public Door left = new Door(),right = Door(); Car(){ for(int i=0;i<4; i++){ wheels[i] = Wheel(); } } main(String[] args) { Car car = Car(); car.left.window.rollup(); car.wheels[0].inflate(72); car.engine.Service(); } }
- (略)
- 创建一个名为Amphibian的类,由此继承产生一个成为Frog的类,在基类中设置适当的方法,在main()中,创建一个Frog向上转型至Amphibian, 然后说明所有方法都可工作
//两栖动物 Amphibian{ 交配 mating(Amphibian amphibian){ System.两栖动物交配); } } 青蛙 Frog extends Amphibian{ main(String[] args) { Frog frog = Frog(); frog.mating(frog); } }
- 修改练习16,使Frog覆盖基类中方法的定义。请留心main中都发生了什么
Frog extends Amphibian{ mating(Frog frog){ System.青蛙交配); } Frog(); frog.mating(frog); } }
- (略)
- (略)