java编程思想第四版第十章习题
- 第一题
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();
}
} - 第二题
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();
}
} } - 第三题
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());
}
} } - 第四题
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();
}
} } - 第五题
package net.mindview.innerclasses; class Outter{
class Inner{ }
} public class Test5 {
public void getInner(){
Outter outter = new Outter();
Outter.Inner in = outter.new Inner();
}
} - 第六题
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());
} } - 第七题
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();
}
} - (略)
- 第九题
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());
}
} - 第十题
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));
}
} - 第十一题
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();
} } - 第十二题
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();
}
} - 第十三题
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));
}
} - (略)
- 第十五题
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());
} } - 第十六题
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);
} } - 第十七题
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); } } - 第十八题
package net.mindview.innerclasses.test18; public class Test18 {
public static class QianTao{ }
public static void main(String[] args) {
QianTao q = new QianTao();
}
} - 第十九题
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);
}
}编译后的文件结构:
- 第二十题
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();
}
} - 第二一题
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()");
} } - 第二十二题
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();
} } } - 第二十三题
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();
}
} - f
- f
- f
- f
java编程思想第四版第十章习题的更多相关文章
- java编程思想第四版第十章总结
1. 内部类的特性 他允许你把一些逻辑相关的类组织在一起. 2. 使用.this 如果你需要在内部类中堆外部类进行应用,可以使用外部类的名字后面加.this.下面展示了如何使用 .this packa ...
- java编程思想第四版第九章习题
第三题 package net.mindview.interfaces; abstract class Base{ public Base(){ print(); } abstract void pr ...
- java编程思想第四版第八章习题
第一题 package net.mindview.polymorphism; //基类-自行车 class Cycle{ } //子类-单轮车 class Unicycle extends Cycle ...
- java编程思想第四版中net.mindview.util包下载,及源码简单导入使用
在java编程思想第四版中需要使用net.mindview.util包,大家可以直接到http://www.mindviewinc.com/TIJ4/CodeInstructions.html 去下载 ...
- 《Java编程思想第四版》附录 B 对比 C++和 Java
<Java编程思想第四版完整中文高清版.pdf>-笔记 附录 B 对比 C++和 Java “作为一名 C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且 Java 的语法无疑是 ...
- Java编程思想第四版勘误
坊间传说这本书翻译得很烂,我倒觉得还好.虽然看原文更准确,但是如果在具备一定编程思维和基础.能够看出来疑问的情况下,还是看中文更快一些,而且这本书本身也不适合初学者看.当然,错误和不通顺还是有的,而且 ...
- Java编程思想第四版完整中文高清版.pdf
Java编程思想第四版完整中文高清版.pdf 链接: https://pan.baidu.com/s/1vV5BHF3L-bnaG6WGurdJ_A 提取码: vigy 复制这段内容后打开百度网盘手机 ...
- 《Java编程思想第四版完整中文高清版.pdf》-笔记
D.2.1 安插自己的测试代码 插入下述“显式”计时代码,对程序进行评测: long start = System.currentTimeMillis(); // 要计时的运算代码放在这儿 long ...
- 《Java编程思想第四版》附录 C Java 编程规则
附录 C Java 编程规则 本附录包含了大量有用的建议,帮助大家进行低级程序设计,并提供了代码编写的一般性指导: (1) 类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符 ...
随机推荐
- 代码审计-Beescms_V4.0
Beescms_V4.0代码审计源于一场AWD线下比赛的漏洞源码 看了别的师傅的文章发现这个源码也非常简单 ,所以今晚简单审计过一遍. 0x01 预留后门 awd首先备份源码,然后下载下来查杀后门, ...
- Vmware Ubuntu 开机蓝屏
引用:http://tieba.baidu.com/p/4898482611 1. 这是vm的一个bug!!!打开你的虚拟系统目录,编辑虚拟机文件夹下面的.vmx 用记事本打开,加入代码. cpuid ...
- c++11::std::is_same/decay
#include <type_traits> std::is_same 判断类型是否一致 通过std::is_same即可判断两个类型是否一样,特别在模板里面,在不清楚模板的参数时,此功能 ...
- linux下 Mysql 安装使用
.安装mysql sudo apt-get install mysql-server mysql-client sudo service mysql restart 2.5.7版本以上修修改updat ...
- MacOs mysql 安装
1. 去官网下载mysql镜像:https://dev.mysql.com/downloads/file/?id=475582 2. 双击镜像文件 - > 双击.pkg文件 -> 出现 ...
- day08整理(周总结\列表\字典内置方法)
一.周总结 一 计算机基础之编程 1.什么是编程语言 编程是人与计算机交流的介质 2.什么是编程 通过编程语言写一堆文件 3,为什么编程 取代劳动力,帮人类干活 二 计算机组成 1.CPU 控制器 控 ...
- day03课堂练习
简述变量的组成 变量由变量名,赋值符号,和变量值三个部分组成 简述变量名的命名规范 a.变量名必须有意义,要能反映变量值所描述的状态 b.变量名以字母.数字和下划线组成,不能用数字开头 c.不能以关键 ...
- js图片随机切换
使用js做到随机切换图片 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- 在k8s上安装Jenkins及常见问题
持续集成和部署是DevOps的重要组成部分,Jenkins是一款非常流行的持续集成和部署工具,最近试验了一下Jenkins,发现它是我一段时间以来用过的工具中最复杂的.一个可能的原因是它需要与各种其它 ...
- 【Auto.js images.matchTemplate() 函数的特点】
Auto.js images.matchTemplate() 函数的特点 官方文档:https://hyb1996.github.io/AutoJs-Docs/#/images?id=imagesm ...