java编程思想第四版第六章习题

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

    package net.mindview.access;
    
    public class Test3 {
        public static void main(String[] args) {
            net.mindview.access.debug.Test3 t = new net.mindview.access.debug.Test3();
            net.mindview.access.debugoff.Test3 t2 = new net.mindview.access.debugoff.Test3();
        }
    }

    在一个类中导入名字相同,不同包下的其他类, 需要带上报名, 否则会编译不通过.

  4. (略)
  5. (略)
  6. 创建一个带有protected数据的类,运用在第一个类中处理protected数据的方法在相同的文件中创建第二个类。

    /**
     * 类内处理Protected数据
     * <p/>
     * Created by wang on 15/8/4.
     */
    class Data {
        protected int d = 11;
    }
    
    class ProcessData {
        public void changeData(Data data) {
            data.d = 22; // 类内处理protected数据
        }
    }
    
    public class ProtecedData {
    
        public static void main(String[] strs) {
            Data data = new Data();
            System.out.println(data.d);
            new ProcessData().changeData(data);
            System.out.println(data.d);
        }
    }
    /**
     * Output:
     11
     22
     */
  7. (略)
  8. 效仿实例Lunch.java的形式,创建一个名为ConnectionManager的类,该类管理一个元素为Connection对象的固定数组。客户端程序员不能直接创建Connection对象,而只能通过ConnectionManager中的某个static方法来获取他们。当ConnectionManager之中不再有对象时,它会返回null引用。在main()之中检测这些类。

    package net.mindview.access;
    
    public class ConnectionManager {
        static int count = 5;
        static Connection[] conns = new Connection[count];
        
        //静态代码块, 初始化成员变量
        static {
            for(int i=0; i<conns.length; i++){
                conns[i] = Connection.makeConnection();
            }
        }
        
        //获取第i个连接
        public static Connection getConnection(int i){
            
            if(i < count){
                return conns[i];
            }else{
                return null;
            }
        }
        
        public static void main(String[] args) {
            for(int i=0; i<6; i++){
                Connection conn = ConnectionManager.getConnection(i);
                if(conn != null){
                    System.out.println("当前有几个连接:"+Connection.getCount());
                } else {
                    System.out.println("null");
                }
            }
    
        }
    
    }
    package net.mindview.access;
    
    public class Connection {
        //用来统计一共创建了多少个Connection对象
        private static int count = 0;
        
        private Connection(){
            Connection.count ++;
        }
        public static Connection makeConnection(){
            return new Connection();
        }
        public static int getCount(){
            return  Connection.count -- ;
        }
        
    }

    这个demo充分体现了面向对象的思想。 需要多思考

原文地址:https://www.cnblogs.com/ITPower/p/8521412.html