马孔多不下雪

练习1

在某个包中创建一个类,在这个类所处的包的外部创建该类的一个实例。

1
2
3
4
5
6
7
8
9
package world.pixiv.thinkinginjava.exercise.chapter6;

import world.pixiv.thinkinginjava.exercise.chapter6.test.Exercise1_test;

public class Exercise1 {
public static void main(String[] args) {
Exercise1_test e = new Exercise1_test();
}
}

练习2

将本节中的代码片段改写成完整的程序,并检验实际所发生的冲突。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package world.pixiv.thinkinginjava.exercise.chapter6;

import java.util.*;
import world.pixiv.thinkinginjava.exercise.chapter6.test.*;

public class Exercise2 {
public static void main(String[] args) {
//Vector v = new Vector();
}
}
/*
* Exception in thread "main" java.lang.Error: Unresolved compilation problems:
* The type Vector is ambiguous
* The type Vector is ambiguous
*
* at world.pixiv.thinkinginjava.exercise.chapter6.Exercise2.main(Exercise2.java:8)
*/

练习3

创建两个包:debug和debugoff,它们都包含一个相同的类,该类有一个debug()方法。第一个版本显示发送给控制台的String参数,而第二个版本什么也不做。使用静态import语句将该类导入到一个测试程序中,并示范条件编译效果。

1
2
3
4
5
6
7
8
9
10
11
package world.pixiv.thinkinginjava.exercise.chapter6;

//import static world.pixiv.thinkinginjava.exercise.chapter6.test.Exercise3_test.*;
import static world.pixiv.thinkinginjava.exercise.chapter6.test_off.Exercise3_test.*;


public class Exercise3 {
public static void main(String[] args) {
debug();
}
}

练习4

展示protected方法具有包访问权限,但不是public。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package world.pixiv.thinkinginjava.exercise.chapter6;

import world.pixiv.thinkinginjava.exercise.chapter6.test.Exercise4_test;

public class Exercise4 {
public static void main(String[] args) {
//Exercise4_test.hello();
A.hello2();
}
}

class A extends Exercise4_test{
public static void hello2(){
hello();
}
}
/*
* hello
*/

练习5

创建一个带有public,private,protected和包访问权限域以及方法成员的类。创建该类的一个对象,看看在你试图调用所有类成员时,会得到什么样的编译信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package world.pixiv.thinkinginjava.exercise.chapter6;

public class Exercise5 {
public static void main(String[] agrs) {
System.out.println(B.publicStr);
System.out.println(B.protectedStr);
System.out.println(B.defaultStr);
//System.out.println(B.privateStr);
B.publicMethod();
B.protectedMethod();
B.method();
//B.privateMethod();
}
}

class B{
public static String publicStr;
protected static String protectedStr;
static String defaultStr;
private static String privateStr;

public static void publicMethod() {}
protected static void protectedMethod() {}
static void method() {}
private static void privateMethod() {}

}
/*
* Exception in thread "main" java.lang.Error: Unresolved compilation problems:
* The field B.privateStr is not visible
* The method privateMethod() from the type B is not visible
*
* at world.pixiv.thinkinginjava.exercise.chapter6.Exercise5.main(Exercise5.java:8)
*
*/

练习6

创建一个带有protected数据的类。运用在第一个类中处理protected数据的方法在相同的文件中创建第二个类。

同练习4.

练习7

根据描述access和Widget的代码片段创建类库。在某个不属于access类库的类中创建一个Widget实例。

1
2
3
4
5
6
7
8
9
package world.pixiv.thinkinginjava.exercise.chapter6;

import world.pixiv.thinkinginjava.exercise.chapter6.test.Widget;

public class Exercise7 {
public static void main(String[] args) {
Widget w = new Widget();
}
}

练习8

效仿示例Lunch.java的形式,创建一个名为ConnectionManager的类,该类管理一个元素为Connection对象的固定数组。客户端程序员不能直接创建Connection对象,而只能通过ConnectionManager中某个static方法来获取它们。当ConnectionManager中不再有对象时,它会返回null引用。在main()中检测这些类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package world.pixiv.thinkinginjava.exercise.chapter6;

import java.util.ArrayList;

public class Exercise8 {
public static void main(String[] args) {
ConnectionManager cm = new ConnectionManager();
cm.addConnection(Connection.makeConnection());
}
}

class Connection{
private Connection() {}
public static Connection makeConnection() {
return new Connection();
}
}

class ConnectionManager{
static ArrayList<Connection> c;
public ConnectionManager(){
c = new ArrayList<Connection>();
}
public ArrayList<Connection> getConnection() {
if(c.isEmpty()) return null;
return c;
}
public void addConnection(Connection con) {
c.add(con);
}
}

练习9:略


 评论