JAVA编程思想第八章练习题

package Cycle1;

public class Application {
    public static void main(String[] args) {
        Cycle bi = new Bicycle();
        bi.ride();
        Cycle tr = new Tricycle();
        tr.ride();
        ((Tricycle) tr).run();
        Cycle un = new Unicycle();
        un.ride();
    }
}

练习3:

package Eshape;

public class Circle extends Shape {
    @Override
    public void draw() {
        System.out.println("Circle.draw()");
    }
    @Override
    public void erase() {
        System.out.println("Circle.erase()");
    }

    @Override
    public void printf() {
        System.out.println("Circle Print");
    }
}

练习4:一样

练习5:

package Cycle1;

import java.util.Random;

public class Cycle {
    public int wheels(){
        Random w = new Random();
        return w.nextInt(4);
    }
    public void ride(){
        System.out.println("Ride");
        System.out.println(wheels());
    }
}

 

练习9:

package Cycle1;
class Rodent{
    public void hop(){
        System.out.println("Rodent hopping");
    }
    public void scurry(){
        System.out.println("Rodent scurrying");
    }
    public void reproduce(){
        System.out.println("Making more Rodents");
    }

    @Override
    public String toString() {
        return "Rodent{}";
    }
}
class Mouse extends Rodent{
    @Override
    public void hop() {
        System.out.println("Mouse1");
    }

    @Override
    public void scurry() {
        System.out.println("Mouse2");
    }

    @Override
    public void reproduce() {
        System.out.println("Mouse3");
    }

    @Override
    public String toString() {
        return "Mouse{}";
    }
}
class Gerbil extends Rodent{
    @Override
    public void hop() {
        System.out.println("Gerbil1");
    }

    @Override
    public void scurry() {
        System.out.println("Gerbil2");
    }

    @Override
    public void reproduce() {
        System.out.println("Gerbil3");
    }

    @Override
    public String toString() {
        return "Gerbil{}";
    }
}
class Hamster extends Rodent{
    @Override
    public void hop() {
        System.out.println("Hamster1");
    }

    @Override
    public void scurry() {
        System.out.println("Hamster2");
    }

    @Override
    public void reproduce() {
        System.out.println("Hamster3");
    }

    @Override
    public String toString() {
        return "Hamster{}";
    }
}
public class E09 {
    public static void main(String[] args) {
        Rodent[] rodents = {
                new Mouse(),new Gerbil(),new Hamster(),
        };
        for (Rodent r :
                rodents) {
            r.hop();
            r.scurry();
            r.reproduce();
            r.toString();
        }
    }
}

 练习10:

package Cycle1;
class TwoMethods{
    public void m1(){
        System.out.println("Inside m1,calling m2");
        m2();
    }
    public void m2(){
        System.out.println("Inside m2");
    }
}
class Inherited extends TwoMethods{
    @Override
    public void m2() {
        System.out.println("Inside Inherited m2");
    }
}
public class E10 {
    public static void main(String[] args) {
        TwoMethods x = new Inherited();
        x.m1();
    }
}

class Pickle{
    Pickle() {
        System.out.println("Pickle");
    }
}
class Sandwich2 extends PortableLunch{
    Bread b = new Bread();
    Cheese c = new Cheese();
    Lettuce l = new Lettuce();
    Pickle p = new Pickle();
    Sandwich2(){
        System.out.println("Sandwich");
    }
}

public class E11 {
    public static void main(String[] args) {
        new Sandwich2();
    }
}

class Member{
    public Member(String id) {
        System.out.println("Member constructor " + id);
    }
}
class Rodent2{
    Member m1 = new Member("r1"),m2 = new Member("r2");

    public Rodent2() {
        System.out.println("Rodent constructor");
    }
    public void hop(){
        System.out.println("Rodent hopping");
    }
    public void scurry(){
        System.out.println("Rodent scurry");
    }
    public void reproduce(){
        System.out.println("Making more Rodents");
    }

    @Override
    public String toString() {
        return "Rodent";
    }
}
class Mouse2 extends Rodent2{
    Member m1 = new Member("m1"),m2 = new Member("m2");

    public Mouse2() {
        System.out.println("Mouse constructor");
    }

    @Override
    public void hop() {
        System.out.println("Mouse1");
    }

    @Override
    public void scurry() {
        System.out.println("Mouse2");
    }
    @Override
    public void reproduce() {
        System.out.println("Mouse3");
    }

    @Override
    public String toString() {
        return "Mouse{}";
    }
}
class Gerbil2 extends Rodent2{
    Member m1 = new Member("g1"), m2 = new Member("g2");
    @Override
    public void hop() {
        System.out.println("Gerbil1");
    }

    @Override
    public void scurry() {
        System.out.println("Gerbil2");
    }

    @Override
    public void reproduce() {
        System.out.println("Gerbil3");
    }

    @Override
    public String toString() {
        return "Gerbil{}";
    }
}
class Hamster2 extends Rodent2{
    Member m1 = new Member("h1"), m2 = new Member("h2");

    public Hamster2() {
        System.out.println("Hamster constructor");
    }

    @Override
    public void hop() {
        System.out.println("Hamster1");
    }

    @Override
    public void scurry() {
        System.out.println("Hamster2");
    }

    @Override
    public void reproduce() {
        System.out.println("Hamster3");
    }

    @Override
    public String toString() {
        return "Hamster{}";
    }
}
public class E12 {
    public static void main(String[] args) {
        new Hamster2();
    }

}

 练习13:(不会)

class Shared{
    private int refcount = 0;
    private static long counter = 0;
    private final long id = counter++;

    public Shared() {
        System.out.println("Creating" + this);
    }
    public void addRef(){
        refcount++;
    }
    protected void finalize(){
        if (refcount != 0)
            System.out.println("Error");
    }
    protected void dispose(){
        if (--refcount == 0){
            System.out.println("Disposing " + this);
        }
    }

    @Override
    public String toString() {
        return "Shared " + id;
    }
}

class Composing{
    private Shared shared;
    private static long counter = 0;
    private final long id = counter++;

    public Composing(Shared shared) {
        System.out.println("Creating " + this);
        this.shared = shared;
        this.shared.addRef();
    }

    protected void dispose(){
        System.out.println("disposing" + this);
        shared.dispose();
    }

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

public class ReferenceCounting {
    public static void main(String[] args) {
        Shared shared = new Shared();
        Composing[] composing = {
                new Composing(shared),
                new Composing(shared),
                new Composing(shared),
                new Composing(shared),
                new Composing(shared),
                new Composing(shared),
                new Composing(shared),
        };
        for (Composing c :
                composing) {
            c.dispose();
        }
        System.gc();
        new Composing((new Shared()));
        System.gc();
    }
}

练习14:(不会)

class RectangularGlyph extends Glyph{
    private int width = 4;
    private int height = 5;

    public RectangularGlyph(int width, int height) {
        this.width = width;
        this.height = height;
        System.out.println("RectangularGlyph.RectangularGlyph(), width = " + width + ", height = " + height);
    }
    void draw(){
        System.out.println("RectangularGlyph.draw(), area = " + width * height);
    }
}
public class E15 {
    public static void main(String[] args) {
        new RoundGlyph(5);
        new RectangularGlyph(2,2);
    }
}

引用,此引用可以指示三种不同的状态。纳入一些可以改变这些状态的方法。

class AlertStatus{
    public String getStatus(){return "None";}
}
class RedAlertStatus extends AlertStatus{
    public String getStatus(){return "Red";}
}
class YelloAlertStatus extends AlertStatus{
    public String getStatus(){return "Yello";}
}
class BlueAlertStatus extends AlertStatus{
    public String getStatus(){return "Blue";}
}
class Starship{
    private AlertStatus status = new BlueAlertStatus();
    public void setStatus(AlertStatus istatus){
        status = istatus;
    }

    @Override
    public String toString() {
        return status.getStatus();
    }
}

public class E16 {
    public static void main(String[] args) {
        Starship eprise = new Starship();
        System.out.println(eprise);
        eprise.setStatus(new RedAlertStatus());
        System.out.println(eprise);
        eprise.setStatus(new YelloAlertStatus());
        System.out.println(eprise);
    }
}

 

package Cycle1;

public class Application {
    public static void main(String[] args) {
        Cycle bi = new Bicycle();
        bi.ride();
        ((Bicycle) bi).balance();
        Cycle tr = new Tricycle();
        tr.ride();
        //((Bicycle)tr).balance();
        Cycle un = new Unicycle();
        un.ride();
        ((Unicycle) un).balance();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值