• 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(){
    		
    	}
    }
    



  • 相关阅读:
    C++小项目:directx11图形程序(七):modelclass
    C++小项目:directx11图形程序(六):cameraclass
    C++小项目:directx11图形程序(五):shadersclass
    C++小项目:directx11图形程序(四):d3dclass
    C++小项目:directx11图形程序(三):graphicsclass
    C++小项目:directx11图形程序(二):systemclass
    舞台上加载一外部SWF,舞台如何调用该swf内部方法呢?
    as3绘制抛物线
    Unity常用代码总结
    C# ref和out区别介绍
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7344863.html
Copyright © 2020-2023  润新知