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对象的固定数组。客户端程序员不能直接创建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(){
		
	}
}



你可能感兴趣的:(java,Java编程思想*第四版,编程)