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

java编程思想第四版第七章习题的更多相关文章

  1. Java编程思想第四版*第七章*个人练习

    欢迎加群:239063848 成团的笔记:该组仅用于技术共享和交流,问题和答案公布 潘基聊天.禁止广告.禁止招聘-- 练习1:(2)创建一个简单的类.第二个类中,将一个引用定义为第一个类的对象.运用惰 ...

  2. java编程思想第四版第七章总结

    1. 实现类的复用通常有两种方式 组合:在新的类中产生现有类的对象 继承:按照现有类的类型来创造新类 2. 一个特殊的方法toString() 在非基本类型的对象中, 都有toString()方法 当 ...

  3. java编程思想第四版第十一章习题

    第一题 package net.mindview.holding.test1; import java.util.ArrayList; import java.util.List; /** * 沙鼠 ...

  4. java编程思想第四版第六章习题

    (略) (略) 创建两个包:debug和debugoff,他们都包含一个相同的类,该类有一个debug()方法,第一个版本显示发送给控制台的String参数,而第二版本什么也不做,使用静态import ...

  5. java编程思想第四版第五章习题

    创建一个类, 它包含一个未初始化的String引用.验证该引用被Java初始化成了null package net.mindview.initialization; public class Test ...

  6. java编程思想第四版第十三章字符串 习题

    fas 第二题 package net.mindview.strings; import java.util.ArrayList; import java.util.List; /** * 无限循环 ...

  7. java编程思想第四版第六章总结

    1. 代码重构 为什么f要代码重构 第一次代码不一定是完美的, 总会发现更优雅的写法. 代码重构需要考虑的问题 类库的修改不会破坏客户端程序员的代码. 源程序方便扩展和优化 2. 包 创建一个独一无二 ...

  8. java编程思想 第四版 第六章 个人练习

    欢迎加群:239063848 进群须知:本群仅用于技术分享与交流.问题公布与解答 禁止闲聊.非诚勿扰 练习1:(1)在某个包中创建一个类,在这个类所处的包的外部创建该类的一个实例. import mi ...

  9. java编程思想第四版第十三章字符串 总结

    1. String和StringBulider的使用 通过书中介绍, 我们得知如下结论: 当使用+连接符将字符串进行拼接的时候, 编译器会进行自动优化为使用StringBuilder连接字符串. 当在 ...

随机推荐

  1. 机器学习:weka中添加自己的分类和聚类算法

    不管是实验室研究机器学习算法或是公司研发,都有需要自己改进算法的时候,下面就说说怎么在weka里增加改进的机器学习算法. 一 添加分类算法的流程 1 编写的分类器必须继承 Classifier或是Cl ...

  2. java集合之linkedList链表基础

    LinkedList链表: List接口的链接列表实现.允许存储所有元素(包含null).使用频繁增删元素. linkedList方法: void addFirst(E e) 指定元素插入列表的开头 ...

  3. c++11::std::optional

    std::optional还有一个类似于智能指针的接口, 它可以显式转化为bool来表示std::optional是否有一个值. 指针的解引用操作符*和->都实现了, 但是没有std::bad_ ...

  4. 近万字案例:Rancher + VMware PKS实现全球数百站点K8S集群管理

    Sovereign Systems是一家成立于2007年的技术咨询公司,帮助客户将传统数据中心技术和应用程序转换为更高效的.基于云的技术平台,以更好地应对业务挑战.曾连续3年提名CRN,并且在2012 ...

  5. openflow流表项中有关ip掩码的匹配的问题(控制器为ryu)

    一.写在前面 唉,被分配到sdn安全方向,顶不住,顶不住,感觉搞不出来什么有搞头的东西.可若是让我水水的应付,我想我也是做不到的,世上无难事只怕有心人.好了,进入正题,本次要讨论的时一个比较细节的东西 ...

  6. Python 常见异常类型

    python标准异常 异常名称                                   描述 BaseException                         所有异常的基类Sy ...

  7. 追查Could not get a databaseId from dataSource

    Mybatis 创建连接池的时候报错: ERROR 2017-03-15 00:44:50,333 commons.JakartaCommonsLoggingImpl:38 Could not get ...

  8. 修改List<Map<String, Object>>的值

    List<Map<String, Object>>  aList = new ArrayList(); //加入一个Map元素Map map = new HashMap();m ...

  9. mybatis的插件机制

    一.mybatis的插件介绍 关于mybatis的插件,我想大家也都用过,就比如最常用的逆向工程,根据表结构生成model,dao,xml文件,还有分页插件,那这些插件的工作原理是怎么样的呢,就比如分 ...

  10. SpringCloud之Hystrix服务降级(七)

    Hystrix设计原则 1.防止单个服务的故障,耗尽整个系统服务的容器(比如tomcat)的线程资源,避免分布式环境里大量级联失败.通过第三方客户端访问(通常是通过网络)依赖服务出现失败.拒绝.超时或 ...