欢迎加群: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(); /** * 输出 value2 value3 debug2()…… 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对象的固定数组。client程序猿不能直接创建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@527c6768 1、test.Connection@527c6768 2、test.Connection@527c6768 3、test.Connection@527c6768 4、test.Connection@527c6768 5、null 6、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(){ } }