热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java-Java编程思想第四版第九章练习

练习abstractclassA{abstractvoidprint();publicA(){print();}}publicclassJa9_1_
练习
abstract class A{
    abstract void print();
    public A(){print();}
}
public class Ja9_1_3 extends A{
    int i=5;
    void print(){
        System.out.println(i);
    }
    public static void main(String[] args){
        Ja9_1_3 j=new Ja9_1_3();
        j.print();
    }
}
/*
 *output:
 0
 5
 * */
 
 

练习4:

import static net.mindview.util.Print.*;
abstract class Dad {}

class Son extends Dad {
	protected void print() { System.out.println("Son"); }
}

abstract class SecondDad {
	abstract protected void print();
}

class SecondSon extends SecondDad {
	protected void print() { System.out.println("SecondSon"); }
}

public class Ja9_1_4 {
	public static void testPrint(Dad d) {
		((Son)d).print();//it's necessary
	}
	public static void secondTestPrint(SecondDad sd) {
		sd.print();//don't need ((SecondSon)sd)
	}
	public static void main(String[] args) {
		Son s = new Son();
		Ja9_1_4.testPrint(s);
		SecondSon ss = new SecondSon();
		Ja9_1_4.secondTestPrint(ss);			
	}
}

练习5:

package net.mindview.util;
public interface Ja9_2_5b{
    void first();
    void second();
    void third();
}

import net.mindview.util.Ja9_2_5b;
import static net.mindview.util.Print.*;
public class Ja9_2_5 implements Ja9_2_5b{
    public void first(){print("first()");}
    public void second(){print("second()");}
    public void third(){print("third()");}
    public static void main(String[] args){
        Ja9_2_5 ja=new Ja9_2_5();
        ja.first();
        ja.second();
        ja.third();
    }
}
 
 

练习7:

import static net.mindview.util.Print.*;
public class Ja9_2_7{
    public static void main(String[] args) {
         Mouse m=new Mouse();
         Gerbil[] gb={new Gerbil(m),new Gerbil(m),new Gerbil(m),new Gerbil(m),};
         for(Gerbil g:gb){g.dispose();}
    }
}
 interface Rodent{
    public void hop();
    public void scurry();
    public void reproduce();
    public String toString();
}
class Mouse implements Rodent{
    private static int refcount=0;
    private static int count=0;
    private final int id=count++;
    public void refAdd(){refcount++;}
    protected void dispose(){if(--refcount==0)print("Disposing "+this);}
    public String toString(){return "Mouse "+id;}
    public Mouse(){print("Creating "+this);}

    public void hop() {System.out.println("Mouse hopping");}
    public void scurry() {System.out.println("Mouse scurrying");}
    public void reproduce() {System.out.println("Making more Mice");}
}
class Gerbil implements Rodent{
    private static int count=0;
    private final int id=count++;
    private Mouse m;
    public String toString(){return "Gerbil "+id;}
    public Gerbil(Mouse m){this.m=m; m.refAdd(); print("Creating "+this);}
    protected void dispose(){print("Disposing "+this);m.dispose();}

    public void hop() {System.out.println("Gerbil hopping");}
    public void scurry() {System.out.println("Gerbil scurrying");}
    public void reproduce() {System.out.println("Making more Gerbil");}
}
class Hamster implements Rodent{
    public void hop() {System.out.println("Hamster hopping");}
    public void scurry() {System.out.println("Hamster scurrying");}
    public void reproduce() {System.out.println("Making more Hamster");}
    public String toString() {return "Hamster";}
}

 
 

练习8:

import static net.mindview.util.Print.*;

class Meal {
  Meal() { print("Meal()"); }
}

class Bread {
  Bread() { print("Bread()"); }
}

class Cheese {
  Cheese() { print("Cheese()"); }
}

class Lettuce {
  Lettuce() { print("Lettuce()"); }
}

class Lunch extends Meal {
  Lunch() { print("Lunch()"); }
}

class PortableLunch extends Lunch {
  PortableLunch() { print("PortableLunch()");}
}
interface FastFood{
    void first();
    void second();
    void third();
}
public class Ja9_2_8 extends PortableLunch implements FastFood{
  private Bread b = new Bread();
  private Cheese c = new Cheese();
  private Lettuce l = new Lettuce();
 // public Sandwich() { print("Sandwich()"); }
  public void first(){print("first()");}
    public void second(){print("second()");}
    public void third(){print("third()");}
  public static void main(String[] args) {
    Ja9_2_8 ja=new Ja9_2_8();
    ja.first();ja.second();ja.third();
  }
}
 
 

练习10:

import polymorphism.music.Note;
import static net.mindview.util.Print.*;

interface Playable{
     void play(Note n); // Automatically public
}
interface Instrument {
  int VALUE = 5; // static & final
 
  void adjust();
}

class Wind implements Instrument,Playable{
  public void play(Note n) {
    print(this + ".play() " + n);
  }
  public String toString() { return "Wind"; }
  public void adjust() { print(this + ".adjust()"); }
}

class Percussion implements Instrument,Playable{
  public void play(Note n) {
    print(this + ".play() " + n);
  }
  public String toString() { return "Percussion"; }
  public void adjust() { print(this + ".adjust()"); }
}

class Stringed implements Instrument,Playable{
  public void play(Note n) {
    print(this + ".play() " + n);
  }
  public String toString() { return "Stringed"; }
  public void adjust() { print(this + ".adjust()"); }
}

class Brass extends Wind {
  public String toString() { return "Brass"; }
}	

class Woodwind extends Wind {
  public String toString() { return "Woodwind"; }
}

public class Ja9_2_10{
  static void tune(Playable i) {
    i.play(Note.MIDDLE_C);
  }
  static void tuneAll(Playable[] e) {
    for(Playable i : e)
      tune(i);
  }	
  public static void main(String[] args) {
    Playable[] orchestra = {
      new Wind(),
      new Percussion(),
      new Stringed(),
      new Brass(),
      new Woodwind()
    };
    tuneAll(orchestra);
  }
}

练习11:

import  interfaces.interfaceprocessor.*; 
import static net.mindview.util.Print.*;
import java.util.*;
class A {
    public String name(){
        return getClass().getSimpleName();
    }
    public String process(Object input){return (String)input;}
}
class AAdapter implements Processor{
    A a;
    public AAdapter(A a){
        this.a=a;
    }
    public String name(){return a.name();}
    public String process(Object input){return a.process(input);}
}
class B extends A{
    public String process(Object input){
        String m[]=((String)input).split(" ");
        for(int i=0;i 
 

练习12

//: interfaces/Adventure.java
// Multiple interfaces.

interface CanClim{
    void play();
}

interface CanFight {
  void fight();
}

interface CanSwim {
  void swim();
}

interface CanFly {
  void fly();
}

class ActionCharacter {
  public void fight() {}
  public void play(){}
}	

class Hero extends ActionCharacter
    implements CanFight, CanSwim, CanFly, CanClim{
  public void swim() {}
  public void fly() {}
}

public class Ja9_3_12{
  public static void t(CanFight x) { x.fight(); }
  public static void u(CanSwim x) { x.swim(); }
  public static void v(CanFly x) { x.fly(); }
  public static void w(ActionCharacter x) { x.fight(); }
  public static void p(CanClim x){x.play();}
  public static void main(String[] args) {
    Hero h = new Hero();
    t(h); // Treat it as a CanFight
    u(h); // Treat it as a CanSwim
    v(h); // Treat it as a CanFly
    w(h); // Treat it as an ActionCharacter
    p(h);
  }
} ///:~

练习13:

import static net.mindview.util.Print.*;
interface A{void aa();}
interface B extends A{void bb();}
interface C extends A{void cc();}
interface D extends B,C{void dd();} //extends can be variable
public class Ja9_3_13 implements D {
    public void aa(){print("aa");}
    public void bb(){print("bb");}
    public void cc(){print("cc");}
    public void dd(){print("dd");}
    public static void main(String[] args){
        Ja9_3_13 ja=new Ja9_3_13();
        ja.aa();
        ja.bb();
        ja.cc();
        ja.dd();
    }
}
 
 

练习14:

import static net.mindview.util.Print.*;
interface A{void a1(); void a2();}
interface B{void b1(); void b2();}
interface C{void c1(); void c2();}
interface D extends A,B,C{void d();}

public class Ja9_5_14 implements D{
    public void a1(){print("a1");}
    public void a2(){print("a2");}
    public void b1(){print("b1");}
    public void b2(){print("b2");}
    public void c1(){print("c1");}
    public void c2(){print("c2");}
    public void d(){print("d");}
    public static void main(String[] args){
        Ja9_5_14 ja=new Ja9_5_14();
        ja.a1();
        ja.a2();
        ja.b1();
        ja.b2();
        ja.c1();
        ja.c2();
        ja.d();
    }

}

练习15:

import static net.mindview.util.Print.*;
abstract class A{
    abstract void a1();
    abstract void a2();
    abstract void b1();
    abstract void b2();
    abstract void c1();
    abstract void c2();
    abstract void d();

}
public class Ja9_5_15 extends A{
    void a1(){print("a1");}
    void a2(){print("a2");}
    void b1(){print("b1");}
    void b2(){print("b2");}
    void c1(){print("c1");}
    void c2(){print("c2");}
    void d(){print("d");}
    public static void main(String[] args){
        Ja9_5_15 ja=new Ja9_5_15();
        ja.a1();
        ja.a2();
        ja.b1();
        ja.b2();
        ja.c1();
        ja.c2();
        ja.d();
    }
}

练习16:

import java.util.*;
import java.nio.*;
import static net.mindview.util.Print.*;
class RandomChars{
    private static Random rd=new Random();
    public char next(){return (char)(rd.nextInt(100)+2);}//the way to produce random between [2,100-2+1]; turn int to char
}
public class Ja9_6_16 extends RandomChars implements Readable{
    private int count; 
    public Ja9_6_16(int count){this.count=count;}
    public int read(CharBuffer cb){
        if(count--==0){return -1;}
        String result=Character.toString(next())+" ";// method next() can be inferred directly!
        cb.append(result);
        return result.length();
    }

    public static void main(String[] args){
        Scanner s=new Scanner(new Ja9_6_16(7));
        while(s.hasNext()){
            print(s.next()+" ");//the difference between next() and nextInt()
        }
    }
} 
 
 

PS:这一题明确了产生随机数的方法;明确了导出类可以直接调用基类的方法; Scanner的next()方法比nextInt()等方法更强大;Readable接口的read()方法会被Scanner反复调用直到返回值为-1;产生char的方法是产生int序列,再转型成char序列。

练习17:

import static net.mindview.util.Print.*;
interface A{
    int a=1,b=2;
}
public class Ja9_7_17 implements A{
    public static void main(String[] args){
    print(a+"  "+b);   
    //!a=2;
    }
}
 
 

练习18:

import static net.mindview.util.Print.*;
interface Cycle{void produce();}
interface CycleFactory{Cycle getCycle();}
class Unicycle implements Cycle{public void produce(){print("it's Unicycle");}}
class Bicycle implements Cycle{public void produce(){print("it's Bicycle");}}
class Tricycle implements Cycle{public void produce(){print("it's Tricycle");}}
class UnicycleFactory implements CycleFactory{
    public Cycle getCycle(){return new Unicycle();}
}
class BicycleFactory implements CycleFactory{
    public Cycle getCycle(){return new Bicycle();}
}
class TricycleFactory implements CycleFactory{
    public Cycle getCycle(){return new Tricycle();}
}
public class Ja9_9_18{
    static void make(CycleFactory cf){
        Cycle c=cf.getCycle();
        c.produce();
    }
    public static void main(String[] args){
        make(new UnicycleFactory());
        make(new BicycleFactory());
        make(new TricycleFactory());
    }
}
 

推荐阅读
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 学习Java异常处理之throws之抛出并捕获异常(9)
    任务描述本关任务:在main方法之外创建任意一个方法接收给定的两个字符串,把第二个字符串的长度减1生成一个整数值,输出第一个字符串长度是 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
author-avatar
手机用户2502860335
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有