java编程思想第四版第八章习题

简介: 第一题 package net.mindview.polymorphism; //基类-自行车 class Cycle{ } //子类-单轮车 class Unicycle extends Cycle{ } //子类-双轮车 class Bicycle extends Cycle{ } //子类-三轮车 class Tricycle extends Cycl...

1..第一题


package net.mindview.polymorphism;
//基类-自行车
class Cycle{
}
//子类-单轮车
class Unicycle extends Cycle{
}
//子类-双轮车
class Bicycle extends Cycle{
}
//子类-三轮车
class Tricycle extends Cycle{
}
public class CycleCompetition {
    public static void ride(Cycle cycle){
    }
    public static void main(String[] args) {
        Bicycle b = new Bicycle();
        ride(b);
    }
} 你


2.(略)


3.(略)


4.第四题


package net.mindview.polymorphism;
import java.util.Random;
//形状
class Shape{
    public void draw(){}
    public void erase(){}
}
//圆形
class Cycle1 extends Shape {
    @Override
    public void draw() {
        System.out.println("draw cycle");
    }
    @Override
    public void erase() {
        System.out.println("erase cycle");
    }
}
class Square extends Shape {
    @Override
    public void draw() {
        System.out.println("draw Square");
    }
    @Override
    public void erase() {
        System.out.println("draw Square");
    }
}
//矩形
class Triangle extends Shape {
    @Override
    public void draw() {
        System.out.println("draw Triangle");
    }
    @Override
    public void erase() {
        System.out.println("draw Triangle");
    }
}
//梯形
class Trapezoid extends Shape {
    @Override
    public void draw() {
        System.out.println("draw Trapezoid");
    }
    @Override
    public void erase() {
        System.out.println("draw Trapezoid");
    }
}
class RandomShapeFactory {
    Random random = new Random(100);
    //下面画什么形状呢
    public Shape next(){
        switch(random.nextInt(4)) {
            default:
            case 0: return new Cycle1();
            case 1: return new Square();
            case 2: return new Triangle();
            case 3: return new Trapezoid();
        }
    }
}
public class Shapes {
    public static void main(String[] args) {
        Shape[] shape = new Shape[9];
        RandomShapeFactory factory = new RandomShapeFactory();
        for(int i=0; i<shape.length; i++){
            shape[i] = factory.next();
            shape[i].draw();
        }
    }
}


5.第五题


package net.mindview.polymorphism;
//基类-自行车
class Cycle{
    public int wheels(){
        return 0;
    }
}
//子类-单轮车
class Unicycle extends Cycle{
    public int wheels(){
        return 1;
    }
}
//子类-双轮车
class Bicycle extends Cycle{
    public int wheels(){
        return 2;
    }
}
//子类-三轮车
class Tricycle extends Cycle{
    public int wheels(){
        return 3;
    }
}
public class CycleCompetition {
    public static void ride(Cycle cycle){
        System.out.println(cycle.wheels());
    }
    public static void main(String[] args) {
        Bicycle b = new Bicycle();
        ride(b);
    }
}


6.第六题


package net.mindview.polymorphism.Music3;
import net.mindview.polymorphism.Note;
class Instrument {
    public void play(Note i){
        System.out.println("Instrument.play() ");
    }
    public String toString () { 
        return Instrument.class.getName(); 
    }
    void adjust(){System.out.println("adjust Instrument");}
}
class Wind extends Instrument {
    @Override
    public void play(Note i) {
        System.out.println("Wind.play() ");
    }
    String what (){ return "Wind"; }
    void adjust(){System.out.println("adjust Wind");}
}
class Stringed extends Instrument {
    @Override
    public void play(Note i) {
        System.out.println("Stringed.play() ");
    }
    String what (){ return "Stringed"; }
    void adjust(){System.out.println("adjust Stringed");}
}
class Brass extends Instrument {
    @Override
    public void play(Note i) {
        System.out.println("Brass.play() ");
    }
    String what (){ return "Brass"; }
    void adjust(){System.out.println("adjust Brass");}
}
public class Music3 {
    //曲调
    public static void tune(Instrument i){
        i.play(Note.MIDDLE_C);
    }
    public static void tuneAll(Instrument[] i){
        for(Instrument ins: i){
            tune(ins);
        }
    }
    public static void main(String[] args) {
        Instrument[] i = {
                new Wind(),
                new Stringed(),
                new Brass()
        };
        tuneAll(i);
        Instrument t = new Instrument();
        System.out.println(t);
    }
}


7.第七题


package net.mindview.polymorphism.Music3;
import net.mindview.polymorphism.Note;
class Instrument {
    public void play(Note i){
        System.out.println("Instrument.play() ");
    }
    public String toString () { 
        return Instrument.class.getName(); 
    }
    void adjust(){System.out.println("adjust Instrument");}
}
class Wind extends Instrument {
    @Override
    public void play(Note i) {
        System.out.println("Wind.play() ");
    }
    String what (){ return "Wind"; }
    void adjust(){System.out.println("adjust Wind");}
}
class Stringed extends Instrument {
    @Override
    public void play(Note i) {
        System.out.println("Stringed.play() ");
    }
    String what (){ return "Stringed"; }
    void adjust(){System.out.println("adjust Stringed");}
}
class Brass extends Instrument {
    @Override
    public void play(Note i) {
        System.out.println("Brass.play() ");
    }
    String what (){ return "Brass"; }
    void adjust(){System.out.println("adjust Brass");}
}
class Other extends Instrument {
    @Override
    public void play(Note i) {
        System.out.println("Other.play() ");
    }
    String what (){ return "Other"; }
    void adjust(){System.out.println("adjust Other");}
}
public class Music3 {
    //曲调
    public static void tune(Instrument i){
        i.play(Note.MIDDLE_C);
    }
    public static void tuneAll(Instrument[] i){
        for(Instrument ins: i){
            tune(ins);
        }
    }
    public static void main(String[] args) {
        Instrument[] i = {
                new Wind(),
                new Stringed(),
                new Brass(),
                new Other()
        };
        tuneAll(i);
        Instrument t = new Instrument();
        System.out.println(t);
    }
}


8.第八题


package net.mindview.polymorphism.Music3;
import java.util.Random;
import net.mindview.polymorphism.Note;
class Instrument {
    public void play(Note i){
        System.out.println("Instrument.play() ");
    }
    public String toString () { 
        return Instrument.class.getName(); 
    }
    void adjust(){System.out.println("adjust Instrument");}
}
class Wind extends Instrument {
    @Override
    public void play(Note i) {
        System.out.println("Wind.play() ");
    }
    String what (){ return "Wind"; }
    void adjust(){System.out.println("adjust Wind");}
}
class Stringed extends Instrument {
    @Override
    public void play(Note i) {
        System.out.println("Stringed.play() ");
    }
    String what (){ return "Stringed"; }
    void adjust(){System.out.println("adjust Stringed");}
}
class Brass extends Instrument {
    @Override
    public void play(Note i) {
        System.out.println("Brass.play() ");
    }
    String what (){ return "Brass"; }
    void adjust(){System.out.println("adjust Brass");}
}
class Other extends Instrument {
    @Override
    public void play(Note i) {
        System.out.println("Other.play() ");
    }
    String what (){ return "Other"; }
    void adjust(){System.out.println("adjust Other");}
}
class RandomInstrumentFactory {
    Random rand = new Random(100);
    public Instrument next(){
        switch(rand.nextInt(4)){
            default:
            case 0: return new Wind();
            case 1: return new Stringed();
            case 2: return new Brass();
            case 3: return new Other();
        }
    }
}
public class Music3 {
    //曲调
    public static void tune(Instrument i){
        i.play(Note.MIDDLE_C);
    }
    public static void tuneAll(Instrument[] i){
        for(Instrument ins: i){
            tune(ins);
        }
    }
    public static void main(String[] args) {
        RandomInstrumentFactory factory = new RandomInstrumentFactory();
        Instrument[] instruments = new Instrument[10];
        for(int i=0; i<instruments.length; i++){
            instruments[i] = factory.next();
        }
        tuneAll(instruments);
        Instrument t = new Instrument();
        System.out.println(t);
    }
}


9.第九题


package net.mindview.polymorphism;
//啮(nie四声)齿动物
class Rodent{
    void say(){System.out.println("hi,我是 Rodent");}
}
//老鼠
class Mouse extends Rodent{
    void say(){System.out.println("hi,我是 Mouse");}
}
//鼹鼠
class Gerbil extends Rodent{
    void say(){System.out.println("hi,我是 Gerbil");}
}
//大颊鼠
class Hamster extends Rodent{
    void say(){System.out.println("hi,我是 Hamster");}
}
//啮(nie四声)齿动物大家族
public class RodentHome {
    public static void instroduce(Rodent rodent){
        rodent.say();
    }
    public static void instroduceAll(Rodent[] rodents){
        for(Rodent r: rodents){
            instroduce(r);
        }
    }
    public static void main(String[] args) {
        Rodent[] rodents = {
                new Mouse(),
                new Gerbil(),
                new Hamster()
        };
        instroduceAll(rodents);
    }
}


10.第十题


package net.mindview.polymorphism;
class Base{
    public void method1(){
        System.out.println("method1");
        method2();
    }
    public void method2(){
        System.out.println("Base method2");
    }
}
class Child extends Base{
    @Override
    public void method2() {
        System.out.println("Child method2");
    }
}
public class Test10 {
    public static void up(Base b){
        b.method1();
    }
    public static void main(String[] args) {
        Child c = new Child();
        up(c);
    }
}


11.afd


12.adf


13.第十三题


package net.mindview.polymorphism;
import static net.mindview.util.Print.*;
//这是一个共享类
class Shared {
    private int refCount = 0;
    private static long counter = 0;
    private final long id = counter++;
    public Shared(){
        println("Creating "+this);
    }
    public void addRef(){
        refCount ++;
    }
    protected void dispose(){
        if(--refCount ==0){
            println("Disposing " + this);
        }
    }
    @Override
    public String toString() {
        return "Shared " + id;
    }
    @Override
    protected void finalize() throws Throwable {
        if(refCount != 0){
            println("Error, 引用计数不为0");
        }
        super.finalize();
    }
}
//组成类
class Composing{
    private Shared shared;
    private static long counter = 0;
    private final long id = counter ++;
    public Composing(Shared shared){
        println("Creating "+ this);
        this.shared = shared;
        shared.addRef();
    }
    protected void dispose() {
        println("dispose " + this);
        shared.dispose();
    }
    @Override
    public String toString() {
        return "Composing " + id;
    }
}
//引用计数
public class ReferenceCounting {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Shared shared = new Shared();
        Composing[] composing = {
                new Composing(shared),
                new Composing(shared),
                new Composing(shared),
                new Composing(shared),
                new Composing(shared),
                new Composing(shared)
        };
        for(Composing c:composing){
            c.dispose();
        }
    }
}


14.fa


15.dfa


16.第十六题


package net.mindview.polymorphism;
class AlertStatus {
    @Override
    public String toString() {
        return "AlertStatus";
    }
}
class StartStatus extends AlertStatus {
    @Override
    public String toString() {
        return "StartStatus";
    }
}
class EndStatus extends AlertStatus {
    @Override
    public String toString() {
        return "EndStatus";
    }
}
class PauseStatus extends AlertStatus {
    @Override
    public String toString() {
        return "PauseStatus";
    }
}
class Music4 {
    AlertStatus as = new StartStatus();
    public void pause(){
        as = new PauseStatus();
    }
    public void end(){
        as = new EndStatus();
    }
    public void currentStatus(){
        System.out.println(as);
    }
}
public class Starship {
    public static void main(String[] args) {
        Music4 m = new Music4();
        m.currentStatus();
        m.pause();
        m.currentStatus();
        m.end();
        m.currentStatus();
    }
}


17.第十七题


package net.mindview.polymorphism;
//基类-自行车
class Cycle{
    public int wheels(){
        return 0;
    }
}
//子类-单轮车
class Unicycle extends Cycle{
    public int wheels(){
        return 1;
    }
    public void balance(){
        System.out.println("Unicycle balance");
    }
}
//子类-双轮车
class Bicycle extends Cycle{
    public int wheels(){
        return 2;
    }
    public void balance(){
        System.out.println("Bicycle balance");
    }
}
//子类-三轮车
class Tricycle extends Cycle{
    public int wheels(){
        return 3;
    }
}
public class CycleCompetition {
    public static void ride(Cycle cycle){
        System.out.println(cycle.wheels());
    }
    public static void main(String[] args) {
        Cycle[] cycle = {
                new Cycle(),
                new Unicycle(),
                new Bicycle(),
                new Tricycle()
        };
        //((Cycle)cycle[0]).balance();//编译不通过
        ((Unicycle)cycle[1]).balance();
        ((Bicycle)cycle[2]).balance();
    }
}
相关文章
|
7天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
21 2
|
10天前
|
Java
死磕-java并发编程技术(二)
死磕-java并发编程技术(二)
|
10天前
|
存储 Java 调度
死磕-java并发编程技术(一)
死磕-java并发编程技术(一)
|
10天前
|
设计模式 缓存 Java
死磕-高效的Java编程(一)
死磕-高效的Java编程(一)
|
13天前
|
算法 Java
JAVA并发编程系列(8)CountDownLatch核心原理
面试中的编程题目“模拟拼团”,我们通过使用CountDownLatch来实现多线程条件下的拼团逻辑。此外,深入解析了CountDownLatch的核心原理及其内部实现机制,特别是`await()`方法的具体工作流程。通过详细分析源码与内部结构,帮助读者更好地理解并发编程的关键概念。
|
11天前
|
存储 Java
Java编程中的对象和类
【8月更文挑战第55天】在Java的世界中,“对象”与“类”是构建一切的基础。就像乐高积木一样,类定义了形状和结构,而对象则是根据这些设计拼装出来的具体作品。本篇文章将通过一个简单的例子,展示如何从零开始创建一个类,并利用它来制作我们的第一个Java对象。准备好让你的编程之旅起飞了吗?让我们一起来探索这个神奇的过程!
25 10
|
12天前
|
Java API 容器
JAVA并发编程系列(10)Condition条件队列-并发协作者
本文通过一线大厂面试真题,模拟消费者-生产者的场景,通过简洁的代码演示,帮助读者快速理解并复用。文章还详细解释了Condition与Object.wait()、notify()的区别,并探讨了Condition的核心原理及其实现机制。
|
12天前
|
Java
JAVA并发编程系列(9)CyclicBarrier循环屏障原理分析
本文介绍了拼多多面试中的模拟拼团问题,通过使用 `CyclicBarrier` 实现了多人拼团成功后提交订单并支付的功能。与之前的 `CountDownLatch` 方法不同,`CyclicBarrier` 能够确保所有线程到达屏障点后继续执行,并且屏障可重复使用。文章详细解析了 `CyclicBarrier` 的核心原理及使用方法,并通过代码示例展示了其工作流程。最后,文章还提供了 `CyclicBarrier` 的源码分析,帮助读者深入理解其实现机制。
|
13天前
|
设计模式 安全 Java
Java 编程中的设计模式:单例模式的深度解析
【9月更文挑战第22天】在Java的世界里,单例模式就像是一位老练的舞者,轻盈地穿梭在对象创建的舞台上。它确保了一个类仅有一个实例,并提供全局访问点。这不仅仅是代码优雅的体现,更是资源管理的高手。我们将一起探索单例模式的奥秘,从基础实现到高级应用,再到它与现代Java版本的舞蹈,让我们揭开单例模式的面纱,一探究竟。
23 11
|
10天前
|
算法 安全 Java
JAVA并发编程系列(12)ThreadLocal就是这么简单|建议收藏
很多人都以为TreadLocal很难很深奥,尤其被问到ThreadLocal数据结构、以及如何发生的内存泄漏问题,候选人容易谈虎色变。 日常大家用这个的很少,甚至很多近10年资深研发人员,都没有用过ThreadLocal。本文由浅入深、并且才有通俗易懂方式全面分析ThreadLocal的应用场景、数据结构、内存泄漏问题。降低大家学习啃骨头的心理压力,希望可以帮助大家彻底掌握并应用这个核心技术到工作当中。
下一篇
无影云桌面