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

时间:2023-03-09 00:54:07
java编程思想 第四版 第六章 个人练习

欢迎加群: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(){ }
}