1. 第一题

    package net.mindview.innerclasses;
    
    public class Outer {
    class Inner {
    Inner(){
    System.out.println("这是一个内部类");
    }
    } public Inner in(){
    return new Inner();
    } public static void main(String[] args) {
    Outer out = new Outer();
    Outer.Inner inner = out.in();
    }
    }
  2. 第二题
    package net.mindview.innerclasses;
    /**
    * 选择器
    */
    interface Selector3 {
    //是否结束
    boolean end();
    //当前
    Object current();
    //下一个
    void next();
    } class OtherObject3 {
    String obj;
    OtherObject3(String obj){
    this.obj = obj;
    } @Override
    public String toString() {
    return obj;
    }
    } /**
    * 次序
    */
    public class Sequence3 {
    private Object[] items;
    private int next = ;
    //定义数组的个数
    public Sequence3(int size){
    items = new Object[size];
    }
    //添加
    public void add(Object x){
    items[next ++] = x;
    } //内部类--顺序选择器
    private class SequenceSelector implements Selector {
    //选择器最开始指向第一个元素
    private int i = ;
    @Override
    public boolean end() {
    return i == (items.length);
    } @Override
    public Object current() {
    // TODO Auto-generated method stub
    return items[i];
    } @Override
    public void next() {
    if(i<items.length){
    i++;
    }
    }
    } public Selector selector() {
    return new SequenceSelector();
    } public static void main(String[] args) {
    Sequence3 s = new Sequence3();
    for(int i=; i<; i++){
    s.add(new OtherObject("对象"+i));
    }
    Selector selector = s.selector();
    while(!selector.end()){
    System.out.println(selector.current());
    selector.next();
    }
    } }
  3. 第三题
    package net.mindview.innerclasses;
    /**
    * 选择器
    */
    interface Selector3 {
    //是否结束
    boolean end();
    //当前
    Object current();
    //下一个
    void next();
    @Override
    public String toString();
    } class OtherObject3 {
    String obj;
    OtherObject3(String obj){
    this.obj = obj;
    } @Override
    public String toString() {
    return obj;
    }
    } /**
    * 次序
    */
    public class Sequence3 {
    private Object[] items;
    private int next = ;
    private String str;
    //定义数组的个数
    public Sequence3(int size, String str){
    items = new Object[size];
    this.str = str;
    }
    //添加
    public void add(Object x){
    items[next ++] = x;
    } //内部类--顺序选择器
    private class SequenceSelector implements Selector3 {
    //选择器最开始指向第一个元素
    private int i = ;
    @Override
    public boolean end() {
    return i == (items.length);
    } @Override
    public Object current() {
    // TODO Auto-generated method stub
    return items[i];
    } @Override
    public void next() {
    if(i<items.length){
    i++;
    }
    } public String toString() {
    return str;
    }
    } public Selector3 selector() {
    return new SequenceSelector();
    } public static void main(String[] args) {
    Sequence3 s = new Sequence3(, "三星");
    for(int i=; i<; i++){
    s.add(new OtherObject("对象"+i));
    }
    Selector3 selector = s.selector();
    while(!selector.end()){
    System.out.println(selector.current());
    selector.next();
    System.out.println(selector.toString());
    }
    } }
  4. 第四题
    package net.mindview.innerclasses;
    /**
    * 选择器
    */
    interface Selector {
    //是否结束
    boolean end();
    //当前
    Object current();
    //下一个
    void next();
    } class OtherObject {
    String obj;
    OtherObject(String obj){
    this.obj = obj;
    } @Override
    public String toString() {
    return obj;
    }
    } /**
    * 次序
    */
    public class Sequence {
    private Object[] items;
    private int next = ;
    //定义数组的个数
    public Sequence(int size){
    items = new Object[size];
    }
    //添加
    public void add(Object x){
    items[next ++] = x;
    } //内部类--顺序选择器
    private class SequenceSelector implements Selector {
    //选择器最开始指向第一个元素
    private int i = ;
    @Override
    public boolean end() {
    return i == (items.length);
    }
    /**
    * 新增方法: 在内部类中引用外部类
    */
    public Sequence outer(){
    return Sequence.this;
    } @Override
    public Object current() {
    // TODO Auto-generated method stub
    return items[i];
    } @Override
    public void next() {
    if(i<items.length){
    i++;
    }
    }
    } public Selector selector() {
    return new SequenceSelector();
    } public static void main(String[] args) {
    Sequence s = new Sequence();
    for(int i=; i<; i++){
    s.add("对象"+i);
    }
    Selector selector = s.selector();
    while(!selector.end()){
    System.out.println(selector.current());
    selector.next();
    }
    } }
  5. 第五题
    package net.mindview.innerclasses;
    
    class Outter{
    class Inner{ }
    } public class Test5 {
    public void getInner(){
    Outter outter = new Outter();
    Outter.Inner in = outter.new Inner();
    }
    }
  6. 第六题
    package net.mindview.innerclasses.test6.one;
    
    public interface One {
    public String one();
    }
    package net.mindview.innerclasses.test6.two;
    
    import net.mindview.innerclasses.test6.one.One;
    
    public class Two {
    protected class TwoInner implements One{
    public TwoInner() {
    System.out.println("这时two的内部类,继承自One");
    } @Override
    public String one() {
    return "Two->one()";
    } }
    }
    package net.mindview.innerclasses.test6.three;
    
    import net.mindview.innerclasses.test6.one.One;
    import net.mindview.innerclasses.test6.two.Two; public class Three extends Two{
    private Two two;
    public Three(Two two){
    System.out.println("这时Three类");
    this.two = two;
    }
    public One three(){ return two.new TwoInner();
    }
    public static void main(String[] args) {
    Three three = new Three(new Two());
    One one = three.three();
    System.out.println(one.one());
    } }
  7. 第七题
    package net.mindview.innerclasses.test7;
    interface Update{
    String update();
    }
    public class Show {
    private String str; private String showStr(){
    return str;
    } private class InnerUpdate implements Update{
    private int abc = ;
    public String update(){
    str = "内部类修改";
    System.out.println(str);
    return showStr();
    }
    } public void visitInner(){
    InnerUpdate update = new InnerUpdate();
    System.out.println(update.abc);
    update.update();
    } public static void main(String[] args) {
    Show show = new Show();
    show.visitInner();
    }
    }
  8. (略)
  9. 第九题
    package net.mindview.innerclasses.test9;
    
    interface Show{
    String show();
    } public class Test9 {
    public String update(){
    class Inner implements Show{
    @Override
    public String show() {
    return "学习";
    }
    } Inner inner = new Inner();
    return inner.show();
    }
    public static void main(String[] args) {
    Test9 t = new Test9();
    System.out.println(t.update());
    }
    }
  10. 第十题
    package net.mindview.innerclasses.test9;
    
    interface Show{
    String show();
    } public class Test9 {
    public String update(boolean flag){
    String str=null;
    if(flag){
    class Inner implements Show{
    @Override
    public String show() {
    return "学习";
    }
    }
    Inner inner = new Inner();
    str = inner.show();
    }
    return str;
    }
    public static void main(String[] args) {
    Test9 t = new Test9();
    System.out.println(t.update(true));
    }
    }
  11. 第十一题
    package net.mindview.innerclasses.test10;
    
    interface InterfaceClass{
    void i();
    } public class Test10 {
    private class Inner implements InterfaceClass{
    @Override
    public void i() {
    }
    } public InterfaceClass inner(){
    return new Inner();
    } public static void main(String[] args) {
    Test10 test10 = new Test10();
    InterfaceClass inner = test10.inner();
    //这样不可以,所以被隐藏了
    //Inner inner = test10.inner();
    } }
  12. 第十二题
    package net.mindview.innerclasses.test12;
    interface Update{
    String update();
    }
    public class Show {
    private String str; private String showStr(){
    return str;
    } private class InnerUpdate implements Update{
    private int abc = ;
    public String update(){
    str = "内部类修改";
    System.out.println(str);
    return showStr();
    }
    } public Update visitInner(){
    return new Update(){
    private int abc = ;
    @Override
    public String update() {
    str = "内部类修改";
    System.out.println(str);
    return showStr();
    }
    };
    } public static void main(String[] args) {
    Show show = new Show();
    show.visitInner().update();
    }
    }
  13. 第十三题
    package net.mindview.innerclasses.test13;
    
    interface Show{
    String show();
    } public class Test13 {
    public String update(boolean flag){
    String str=null;
    if(flag){
    return new Show(){
    @Override
    public String show() {
    return "学习";
    } }.show();
    }
    return str;
    }
    public static void main(String[] args) {
    Test13 t = new Test13();
    System.out.println(t.update(true));
    }
    }
  14. (略)
  15. 第十五题
    package net.mindview.innerclasses.test15;
    
    class Person {
    private String name;
    public Person(String name){
    this.name = name;
    }
    @Override
    public String toString() {
    return name;
    }
    }
    public class Test15 {
    public Person method(String name){
    return new Person(name){
    @Override
    public String toString() {
    return super.toString();
    }
    };
    }
    public static void main(String[] args) {
    Test15 t = new Test15();
    System.out.println(t.method("张三").toString());
    } }
  16. 第十六题
    package net.mindview.innerclasses.test16;
    interface Cycle {
    void make();
    } interface CycleFactory {
    Cycle getCycle();
    } class Unicycle implements Cycle{
    private Unicycle(){} @Override
    public void make() {
    System.out.println("make Unicycle");
    } public static CycleFactory factory = new CycleFactory(){
    @Override
    public Cycle getCycle() {
    return new Unicycle();
    }
    };
    } class Bicycle implements Cycle{
    private Bicycle(){} @Override
    public void make() {
    System.out.println("make Bicycle");
    } public static CycleFactory factory = new CycleFactory(){
    @Override
    public Cycle getCycle() {
    return new Bicycle();
    }
    };
    } class Tricycle implements Cycle{
    private Tricycle(){} @Override
    public void make() {
    System.out.println("make Tricycle");
    } public static CycleFactory factory = new CycleFactory(){
    @Override
    public Cycle getCycle() {
    return new Tricycle();
    }
    };
    } public class Cycles {
    public static void serice(CycleFactory factory){
    Cycle c = factory.getCycle();
    c.make();
    }
    public static void main(String[] args) {
    //我想要什么样的车,就找这种车的工厂去制作一辆车就可以了
    serice(Unicycle.factory);
    serice(Bicycle.factory);
    serice(Tricycle.factory);
    } }
  17. 第十七题
    package net.mindview.innerclasses.test17;
    
    import java.util.Random;
    
    /**
    * 这时一个抛硬币和掷骰子等类型的框架
    */ interface ThrowProduct {}
    interface ThrowFactory{
    ThrowProduct getProduct();
    }
    class ThrowCorn implements ThrowProduct{
    Random rand = new Random();
    private ThrowCorn(){
    if(rand.nextInt() % ==){
    System.out.println("硬币的正面");
    }else{
    System.out.println("硬币的反面");
    }
    } public static ThrowFactory factory = new ThrowFactory(){
    @Override
    public ThrowProduct getProduct() {
    return new ThrowCorn();
    }
    };
    } class ThrowDice implements ThrowProduct{
    Random rand = new Random();
    private ThrowDice(){
    System.out.println("掷的骰子数是"+(rand.nextInt()+));
    } public static ThrowFactory factory = new ThrowFactory(){
    @Override
    public ThrowProduct getProduct() {
    return new ThrowDice();
    }
    };
    } public class ThrowFrame {
    public static void service(ThrowFactory f){
    ThrowProduct p = f.getProduct();
    }
    public static void main(String[] args) {
    service(ThrowCorn.factory);
    service(ThrowDice.factory); } }
  18. 第十八题
    package net.mindview.innerclasses.test18;
    
    public class Test18 {
    public static class QianTao{ }
    public static void main(String[] args) {
    QianTao q = new QianTao();
    }
    }
  19. 第十九题
    package net.mindview.innerclasses.test19;
    
    public class Test19 {
    //这时一个嵌套类
    public static class Inner1{ //这时定义在嵌套类中的嵌套类
    static class Inner2{
    public static int i = ;
    }
    }
    public static void main(String[] args) {
    System.out.println(Inner1.Inner2.i);
    }
    }

    编译后的文件结构:

  20. 第二十题
    package net.mindview.innerclasses.test20;
    interface InnerInInterface{
    static class Inner{
    public Inner(){
    System.out.println("嵌套类构造方法");
    }
    }
    } public class Test20 {
    public static void main(String[] args) {
    //直接使用 new 外围类.嵌套类
    InnerInInterface.Inner inner = new InnerInInterface.Inner();
    }
    }
  21. 第二一题
    package net.mindview.innerclasses.test21;
    interface InterfaceClass {
    void f();
    void b();
    class InnerClass{
    static void get(InterfaceClass impl){
    impl.f();
    }
    }
    }
    public class Test21 implements InterfaceClass{
    public Test21(){
    System.out.println("这是Test21构造函数的方法");
    }
    public static void main(String[] args) { Test21 t = new Test21();
    new InterfaceClass.InnerClass().get(t);; } @Override
    public void f() {
    System.out.println("实现类 f()");
    } @Override
    public void b() {
    System.out.println("实现类 b()");
    } }
  22. 第二十二题
    package net.mindview.innerclasses.test22;
    
    //选择器
    interface Selecotr {
    //选择器是否到达尾部
    boolean end();
    //下一个元素编号
    void next();
    //当前元素
    Object current(); } public class Sequence {
    private Object[] items ;
    static int counter = ;
    public Sequence(int size){
    items = new Object[size];
    for(int i=; i<size; i++){
    add("对象"+i);
    }
    } public void add(Object o){
    items[counter++] = o;
    } public Selecotr sequenceSelector = new Selecotr(){
    int i = ;
    @Override
    public boolean end() {
    // TODO Auto-generated method stub
    return i == items.length;
    }
    @Override
    public void next() {
    if(i<items.length)
    i++;
    }
    @Override
    public Object current() {
    if(i<items.length){
    return items[i];
    }
    return null;
    }
    };
    //反序
    public Selecotr reverseSelector = new Selecotr(){
    int i = ; @Override
    public boolean end() {
    return i<;
    } @Override
    public void next() {
    i--;
    } @Override
    public Object current() {
    if(i>=){
    return items[i];
    }
    return null;
    } }; public static void main(String[] args) {
    Sequence s = new Sequence(); //正序
    Selecotr se = s.sequenceSelector;
    while(!se.end()){
    System.out.println(se.current());
    se.next();
    }
    System.out.println("-----------");
    //反序
    Selecotr re = s.reverseSelector;
    while(!re.end()){
    System.out.println(re.current());
    re.next();
    } } }
  23. 第二十三题
    package net.mindview.innerclasses.test23;
    
    public interface U {
    void method1();
    void method2();
    void method3();
    }
    package net.mindview.innerclasses.test23;
    
    public class A {
    U methodA1(){
    return new U(){
    @Override
    public void method1() {
    System.out.println("A methodA1 method1()");
    } @Override
    public void method2() {
    System.out.println("A methodA1 method2()");
    } @Override
    public void method3() {
    System.out.println("A methodA1 method3()");
    }
    };
    }
    }
    package net.mindview.innerclasses.test23;
    
    public class B {
    U[] us ;
    private static int counter = ;
    public B(int size){
    us = new U[size];
    }
    void methodB1(U u){
    us[counter++] = u;
    }
    void methodB2(int i){
    us[i] = null;
    }
    void methodB3(){
    for(int i=; i<us.length; i++){
    U u = us[i];
    u.method1();
    u.method2();
    u.method3();
    }
    } public static void main(String[] args) {
    A a1 = new A();
    A a2 = new A();
    A a3 = new A();
    A a4 = new A();
    A a5 = new A();
    B b1 = new B();
    b1.methodB1(a1.methodA1());
    b1.methodB1(a2.methodA1());
    b1.methodB1(a3.methodA1());
    b1.methodB1(a4.methodA1());
    b1.methodB1(a5.methodA1()); b1.methodB3();
    System.out.println("----------------");
    b1.methodB2();
    b1.methodB3();
    }
    }
  24. f
  25. f
  26. f
  27. f

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

  1. java编程思想第四版第十章总结

    1. 内部类的特性 他允许你把一些逻辑相关的类组织在一起. 2. 使用.this 如果你需要在内部类中堆外部类进行应用,可以使用外部类的名字后面加.this.下面展示了如何使用 .this packa ...

  2. java编程思想第四版第九章习题

    第三题 package net.mindview.interfaces; abstract class Base{ public Base(){ print(); } abstract void pr ...

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

    第一题 package net.mindview.polymorphism; //基类-自行车 class Cycle{ } //子类-单轮车 class Unicycle extends Cycle ...

  4. java编程思想第四版中net.mindview.util包下载,及源码简单导入使用

    在java编程思想第四版中需要使用net.mindview.util包,大家可以直接到http://www.mindviewinc.com/TIJ4/CodeInstructions.html 去下载 ...

  5. 《Java编程思想第四版》附录 B 对比 C++和 Java

    <Java编程思想第四版完整中文高清版.pdf>-笔记 附录 B 对比 C++和 Java “作为一名 C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且 Java 的语法无疑是 ...

  6. Java编程思想第四版勘误

    坊间传说这本书翻译得很烂,我倒觉得还好.虽然看原文更准确,但是如果在具备一定编程思维和基础.能够看出来疑问的情况下,还是看中文更快一些,而且这本书本身也不适合初学者看.当然,错误和不通顺还是有的,而且 ...

  7. Java编程思想第四版完整中文高清版.pdf

    Java编程思想第四版完整中文高清版.pdf 链接: https://pan.baidu.com/s/1vV5BHF3L-bnaG6WGurdJ_A 提取码: vigy 复制这段内容后打开百度网盘手机 ...

  8. 《Java编程思想第四版完整中文高清版.pdf》-笔记

    D.2.1 安插自己的测试代码 插入下述“显式”计时代码,对程序进行评测: long start = System.currentTimeMillis(); // 要计时的运算代码放在这儿 long ...

  9. 《Java编程思想第四版》附录 C Java 编程规则

    附录 C Java 编程规则 本附录包含了大量有用的建议,帮助大家进行低级程序设计,并提供了代码编写的一般性指导: (1) 类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符 ...

随机推荐

  1. 实验吧之【who are you?】(时间盲注)补充

    第二种方法 使用brup进行盲注  也是一个道理 不多贴了 这里提一下  burp怎么判断超时 Options->Connections->Tiimeouts->Normal这一空 ...

  2. MYSQL中HEX、UNHEX函数

    HEX()函数:返回十六进制值的字符串表示形式.注意:并不是十进制转化为十六进制数,而是转化为字符串... UNHEX() 函数: 每对十六进制数字转化为一个字符. 下面是HEX()几个简单的例子: ...

  3. [CODEVS3366] 矿石

    题目描述 Description 经历了千辛万苦,小J找到了N块矿石.这些矿石都有毒性,但只要将两块矿石放在一起,再分开即可解毒.但任一两块矿石都可以互相吸引.为了降低吸引力,小J将他们放入一个直径仅 ...

  4. Flyway 助力数据库脚本自动化管理攻略

    原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」.一群同频者,一起成长,一起精进,打破认知的局限性. 今天,探讨一个有趣的话题:我们可以通过 ...

  5. Python的Argparse模块是什么?

            近日在阅读代码的过程中遇到了Argparse模块,记得前段时间已经看了,可是过了两周现在又忘了, 看来写代码一定要钻研到底搞清楚其中原委才行,本文主要参考Python3.6系列官方文档 ...

  6. org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping

    配置spring+shiro时,启动tomcat报错异常 严重: Context initialization failedorg.springframework.beans.factory.Bean ...

  7. Java并发编程之线程池的使用

    1. 为什么要使用多线程? 随着科技的进步,现在的电脑及服务器的处理器数量都比较多,以后可能会越来越多,比如我的工作电脑的处理器有8个,怎么查看呢? 计算机右键--属性--设备管理器,打开属性窗口,然 ...

  8. ARToolKit-unity

    ARToolKit为开源的AR库,相对于高通和easyAr有几点特点: 1)开源 2)识别项目可以动态添加(详细在后) 3)识别文件可以本地生成 4)目前只能识别图片(目前为.jpg格式) 下边开始详 ...

  9. kali2019里安装Burp Suite安装破解版加汉化版

    Burpsuite是一个强大web漏洞挖掘工具,截断代理,解码和编码,Fuzzy进行各种注入和暴力破解 插件扩展,有多个模块 Burp Suite没有中文版的,我英语又不好,我虽然精通Burp Sui ...

  10. linux(CentOS release 6.5)环境搭建svn

    正文之前,说几句关于svn和git的闲话. 之前用的版本控制工具主要都是svn,随着时间的推移,git以其强大灵活的分支管理功能受到大众喜爱.尤其是多人同时开发时同一项目,且不同部分功能时,git的分 ...