JAVA编程思想第七章练习题

package java7;
class Simple{
    String s;
    public Simple(String si){ s = si;}
    public String toString(){return s;}
    public void setString(String sNew){ s = sNew;}

}
class Second{
    Simple simple;
    String s;
    public Second(String si){s = si;}

    public void check(){
        if (simple == null)
            System.out.println("not Initialized");
        else
            System.out.println("initialized");
    }
    private Simple lazy(){
        if (simple == null) {
            System.out.println("Creating Simple");
            simple = new Simple(s);
        }
        return simple;
    }
    public Simple getSimple(){ return lazy();}
    public String toString(){return lazy().toString();}
    public void setSimple(String sNew){
        lazy().setString(sNew);
    }
}

public class E01 {
    public static void main(String[] args) {
        Second second = new Second("Init String");
        second.check();
        System.out.println(second.getSimple());
        second.check();
        System.out.println(second);
        second.setSimple("New String");
        System.out.println(second);
    }
}

package java7;

public class E02 extends Detergent{
    public void scrub(){
        append("E02.scrub()");
    }

    public void sterilize(){
        System.out.println("this is sterilize");
    }

    public static void main(String[] args) {
        E02 e02 = new E02();
        e02.scrub();
        System.out.println(e02);
        e02.sterilize();

    }
}

package java7;
class Cartoo extends Drawing{
    public Cartoo() {
        System.out.println("Cartoo constructor");
    }
}
public class E03 {
    public static void main(String[] args) {
        new Cartoo();
    }
}

 练习4

package java7;
class Base1{
    public Base1() {
        System.out.println("Base1");
    }
}
class Derived1 extends Base1{
    public Derived1() {
        System.out.println("Derived1");
    }
}
class Derived2 extends Derived1{
    public Derived2() {
        System.out.println("Derived2");
    }
}
public class E04 {
    public static void main(String[] args) {
        new Derived2();
    }
}

练习5

package java7;
class A{
    public A() {
        System.out.println("A()");
    }
}
class B{
    public B() {
        System.out.println("B()");
    }
}
class C extends A{
    B b = new B();
}
public class E05 {
    public static void main(String[] args) {
        new C();
    }
}

 

 练习7:

package java7;
class A2{
    public A2(String s) {
        System.out.println("A2()" + s);
    }
}
class B2{
    public B2(String s) {
        System.out.println("B2()" + s);
    }
}
class C2 extends A2{
    B2 b;
    public C2(String s) {
        super(s);
        b = new B2(s);
    }
}
public class E07 {
    public static void main(String[] args) {
        new C2("hello");
    }
}

练习8 

package java7;
class ji{
    public ji(int i) {
        System.out.println("ji");
    }
}
class ji2 extends ji{
    public ji2() {
        super(1);
        System.out.println("jiji");
    }

    public ji2(int i) {
        super(i);
        System.out.println("feiji");
    }
}
public class E08 {
    public static void main(String[] args) {
        new ji2();
        new ji2(2);
    }

}

练习9:

package java7;
class Component1{
    public Component1() {
        System.out.println("Component1");
    }
}
class Component2{
    public Component2() {
        System.out.println("Component2");
    }
}
class Component3{
    public Component3() {
        System.out.println("Component3");
    }
}
class Root{
    Component1 c1 = new Component1();
    Component2 c2 = new Component2();
    Component3 c3 = new Component3();

    public Root() {
        System.out.println("Root");
    }
}

class Stem extends Root{
    Component1 c1 = new Component1();
    Component2 c2 = new Component2();
    Component3 c3 = new Component3();

    public Stem() {
        System.out.println("Stem");
    }
}
public class E09 {
    public static void main(String[] args) {
        new Stem();
    }

}

 

package java7;
class Component1{
    public Component1() {
        System.out.println("Component1");
    }
    public void dispose(){
        System.out.println("Component Dispose");
    }
}
class Component2{
    public Component2() {
        System.out.println("Component2");
    }
    public void dispose(){
        System.out.println("Component Dispose");
    }
}
class Component3{
    public Component3() {
        System.out.println("Component3");
    }
    public void dispose(){
        System.out.println("Component Dispose");
    }
}
class Root{
    Component1 c1 = new Component1();
    Component2 c2 = new Component2();
    Component3 c3 = new Component3();

    public Root() {
        System.out.println("Root");
    }
    public void disepose(){
        System.out.println("Root dispose");
        c3.dispose();
        c2.dispose();
        c1.dispose();
    }
}

class Stem extends Root{
    Component1 c1 = new Component1();
    Component2 c2 = new Component2();
    Component3 c3 = new Component3();

    public Stem() {
        System.out.println("Stem");
    }
    public void disepose(){
        System.out.println("Stem dispose");
        c3.dispose();
        c2.dispose();
        c1.dispose();
    }
}
public class E09 {
    public static void main(String[] args) {
        new Stem().disepose();
    }


}

练习13:创建一个类,它应带有一个被重载了三次的方法 。继承产生一个新类,并添加一个该方法的新的重载定义,展示这四个方法在导出类中都是可以使用的。

package java7;
class Lei{
    public void f(int i){
        System.out.println("f(int i)");
    }
    public void f(char c){
        System.out.println("f(char c)");
    }
    public void f(double d){
        System.out.println("f(double d)");
    }
}
class Jicheng extends Lei{
    public void f(String s){
        System.out.println("f(String s)");
    }
}
public class E13 {
    public static void main(String[] args) {
        Lei lei = new Lei();
        lei.f(1);
        lei.f(1.0);
        lei.f('s');
        //lei.f("hello");
    }
}

 

package java7;
class Engine{
    public void start(){}
    public void rev(){}
    public void stop(){}

}
class Ser extends Engine{
    public void service(){
        System.out.println("Service for you!");
    }
}

class  Wheel{
    public void inflate(int psi){}
}

class Window{
    public void rollup(){}
    public void rolldown(){}
}

class Door{
    public Window window = new Window();

    public void open(){}
    public void close(){}
}


public class Car {
    public Ser engine = new Ser();
    public Wheel[] wheel = new Wheel[4];
    public Door left = new Door(),right = new Door();

    public Car() {
        for (int i = 0; i < 4; i++) {
            wheel[i] = new Wheel();
        }
    }

    public static void main(String[] args) {
        Car car = new Car();
        car.left.window.rollup();
        car.wheel[0].inflate(72);
        car.engine.start();
        car.engine.service();
    }
}

用该protected方法。

package java7;

import java7.protect.E15_Pro;

class Derived extends E15_Pro{
    public void g(){
        f();
    }
}
public class E15 {
    public static void main(String[] args) {
       // new E15_Pro().f();
        new Derived().g();
    }
}

package java7;
class Amphibian{
    public void move() {
        System.out.println("Move");
    }
}
class Frog1 extends Amphibian{}
public class Frog {
    public static void main(String[] args) {
        Amphibian a = new Frog1();
        a.move();
    }
}
package java7;
class Amphibian{
    public void move() {
        System.out.println("Move");
    }
}
class Frog2 extends Amphibian{
    public void move(){
        System.out.println("Frog");
    }
}
public class Frog {
    public static void main(String[] args) {
        Amphibian a = new Frog2();
        a.move();
    }
}

 

 

package java7;
class SelfCounter{
    private static int count;
    private int id = count++;

    @Override
    public String toString() {
        return "SelfCounter{" +
                "id=" + id +
                '}';
    }
}

class WithFinalFields{
    final SelfCounter scf = new SelfCounter();
    static final SelfCounter scsf = new SelfCounter();

    @Override
    public String toString() {
        return "WithFinalFields{" +
                "scf=" + scf +
                '}' + "scsf = " + scsf;
    }
}
public class E18 {
    public static void main(String[] args) {
        System.out.println("First object:");
        System.out.println(new WithFinalFields());
        System.out.println("second object:");
        System.out.println(new WithFinalFields());
    }
}

package java7;
class WithBlankFinalField{
    private final Integer i;

    public WithBlankFinalField(Integer i) {
        this.i = i;
    }

    public Integer getI() {
        return i;
    }
}
public class E19 {
    public static void main(String[] args) {
        WithBlankFinalField wbff = new WithBlankFinalField(10);
        System.out.println(wbff.getI());
    }
}

 

 

package java7;
class WithFinalMethod{
    final void f(){}
}
public class E20 extends WithFinalMethod{
    //void f(){}不可以

    public static void main(String[] args) {
        
    }
}

 

 不可以继承

 练习23:

package java7;
class LoadTest{
    static {
        System.out.println("Loading LoadTest");
    }
    static void staticMember(){}
}
public class E23 {
    public static void main(String[] args) {
        System.out.println("Calling static member");
        LoadTest.staticMember();
        System.out.println("Creating an object");
        new LoadTest();
    }
}

练习24:

package java7;
class JapaneseBeetle extends Beetle{
    int m = printInit("JapaneseBeetle.m initialized");
    JapaneseBeetle(){
        System.out.println("m = " + m);
        System.out.println("j = " + j);
    }
    static int x3 = printInit("static JapaneseBeetle.x3 initialized");
}
public class E24 {
    public static void main(String[] args) {
        new JapaneseBeetle();
    }
}

final和类初始化这一块没太看懂 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值