Thinking in Java 习题 - 第六章
9月 30, 2013
练习1 #
package access;
//在某个包中创建一个类,在这个类所处的包的外部创建该类的一个实例。
public class Test1{
public Test1 (){
System.out.println("实例");
}
}
import access.*;
public class Test {
public static void main (String args[]){
new Test1();
}
}
练习2 #
//将本节中的代码片段改写为完整的程序,并校验实际所发生的冲突。
练习3 #
//创建两个包:debug和debugoff,他们都包含一个相同的类,该类有一个debug()方法,第一个版本显示发送给控制台的String参数,
//而第二版本什么也不做,使用静态import语句将该类导入到一个测试程序中,并示范条件编译效果。
package access;
import static debug.Test.*;
public class Main {
public static void main (String args[]){
debug("hello");
}
}/*Output:
s:hello
*/
package debug;
public class Test {
public static void debug (String s){
System.out.println("s:"+s);
}
}
package debugoff;
public class Test {
public static void Test(){
return;
}
}
练习4 #
//展示protected方法具有包访问权限,但是它仍旧不是public的。
package access.local;
class Main {
public static void main (String args[]){
System.out.println("main:");
access.debug.Test.greet();
}
}//编译不通过
package access.debug;
public class Test{
protected static void greet(){
System.out.println("helloworld");
}
}
package access.debug;
public class Test1 {
public static void main(String args[]){
System.out.println("Test1:");
access.debug.Test.greet();
}
}
练习5 #
package access.local;
//创建一个带有public,private,protected和包访问权限域以及方法成员的类。创建一个该类的一个对象,看看在你试图调用所有类成员时,
//会得到什么类型的编译信息。请注意,处于同一个目录中的所有类都是默认包的一部分。
public class Main{
public int a;
protected int b;
private int c;
int d;
public void f1(){
System.out.println("f1()");
}
protected void f2(){
System.out.println("f2()");
}
private void f3(){
System.out.println("f3()");
}
void f4(){
System.out.println("f4()");
}
public static void main (String args[]){
Main test = new Main();
test.a=1;
test.b=2;
test.c=3;
test.d=4;
System.out.println(test.a);
System.out.println(test.b);
System.out.println(test.c);
System.out.println(test.d);
test.f1();
test.f2();
test.f3();
test.f4();
}
}
练习6 #
package access.local;
//创建一个带有protected数据的类,运用在第一个类中处理protected数据的方法在相同的文件中创建第二个类。
class Test{
protected int a;
}
class Main{
public static void main (String args[]){
Test test = new Test();
test.a=1;
System.out.println("a="+test.a);
}
}/*Output:
a=1
*/
练习7 #
//根据描述access和Widget的代码片段创建类库,在某个不属于access类库的类中创建一个Widget实例
package access.local;
import access.debug.Widget;;
public class Main {
public static void main(String args[]){
new Widget();
}
}/*Output:
Widget!
*/
package access.debug;
public class Widget {
public Widget(){
System.out.println("Widget!");
}
}
练习8 #
//效仿实例Lunch.java的形式,创建一个名为ConnectionManager的类,该类管理一个元素为Connection对象的固定数组。客户端程序员不能直接创建Connection对象,
//而只能通过ConnectionManager中的某个static方法来获取他们。当ConnectionManager之中不再有对象时,它会返回null引用。在main()之中检测这些类。
练习9 #
这章有点吃力。。本来以为挺简单的规则,看来这样复杂,需要经常回来看。