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

来源:互联网 发布:vb.net select case 编辑:程序博客网 时间:2024/05/18 22:42

欢迎加群:239063848
进群须知:本群仅用于技术分享与交流,问题发布与解答
禁止闲聊、非诚勿扰


练习1:(1)在某个包中创建一个类,在这个类所处的包的外部创建该类的一个实例。

import mil.oms.main.test.Test; public   class  MainTest {             public static void main(String args[]){        Test test=new Test();    }    /**     运行结果Test()实例化……     */} 

package mil.oms.main.test;public class Test{public Test(){System.out.println("Test()实例化……");}}

练习2:(1)将本节中的代码片段改写为完整的程序,并校验实际所发生的冲突。

import mil.oms.main.test.Vector;import java.util.*;public   class  MainTest {             public static void main(String args[]){        Vector vector=new Vector();    java.util.Vector vector1=new java.util.Vector();    }}  
package mil.oms.main.test;public class Vector{public Vector(){System.out.println("Vector()实例化……");}}

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

import debug.Test;public   class  MainTest {             public static void main(String args[]){        Test t=new Test();    t.debug();    }    /**     * 运行结果Test()……     */} 
package debug;public class Test{public void debug(){System.out.println("Test()……");}}
package debugoff;public class Test{public void debug(){}}
练习4:(2)展示protected方法具有包访问权限,但是它仍旧不是public的。 
package debug;public   class  MainTest {             public static void main(String args[]){    Test t=new Test();    t.debug();    }}  

package debug;public class Test{protected void debug(){System.out.println("Test()……");}}

练习5:(2)创建一个带有public,private,protected和包访问权限域以及方法成员的类。创建一个该类的一个对象,看看在你试图调用所有类成员时,会得到什么类型的编译信息。请注意,处于同一个目录中的所有类都是默认包的一部分

package debug;public   class  MainTest {             public static void main(String args[]){    Test t=new Test();    //System.out.println(t.str1);    System.out.println(t.str2);    System.out.println(t.str3);    //t.debug1();    t.debug2();    t.debug3();    /**     * 输出value2value3debug2()……debug3()……     */    }}  

package debug;public class Test{private String str1="value1";protected String str2="value2";public String str3="value3";private void debug1(){System.out.println("debug1()……");}protected void debug2(){System.out.println("debug2()……");}public void debug3(){System.out.println("debug3()……");}}


练习6:(1)创建一个带有protected数据的类,运用在第一个类中处理protected数据的方法在相同的文件中创建第二个类。

package debug;public   class  MainTest {             public static void main(String args[]){    Test t=new Test();    System.out.println(t.str2);    /**     * 输出value2     */    }}  

package debug;public class Test{protected String str2="value2";}

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

package access.local;  import access.debug.Widget;;  public class Test {      public static void main(String args[]){          new Widget();      }  }

package access.debug;    public class Widget {      public Widget(){          System.out.println("Widget!");      }  }  


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

package test;import java.util.Arrays;public class ConnectionManager {public static  Connection [] cons=new Connection[5];static {System.out.println("----------初始化Connection对象----");for(int i=0;i<5;i++){cons[i]=Connection.makeConnection();}}public static  Connection getConnection(){int l=cons.length;if(l>0){Connection con=cons[--l];cons=Arrays.copyOf(cons, l);return con;}else{return null;}}public static void main(String args[]){try {for(int i=0;i<7;i++){Connection con=ConnectionManager.getConnection();System.out.println(i+"、"+con);}} catch (Exception e) {e.printStackTrace();}}/** * 打印结果:----------初始化Connection对象----0、test.Connection@527c67681、test.Connection@527c67682、test.Connection@527c67683、test.Connection@527c67684、test.Connection@527c67685、null6、null */}class Connection{private static Connection connection=new Connection();private Connection(){}public static Connection makeConnection(){return connection;}}

练习9:(2)在access/local目录下编写以下文件(假定access/local目录在你的CLASSPATH中):

package test.access.foreign;public class Foreign {public static void main(String args[]){PackagedClass PackagedClass=new PackagedClass();//由于此类只有包访问权限,编译未通过}/** * 打印结果: */}

package test.access.local;public class Foreign {public static void main(String args[]){PackagedClass PackagedClass=new PackagedClass();//在同一个包中,可正确引用}/** * 打印结果: */}class PackagedClass{public PackagedClass(){}}



2 0
原创粉丝点击