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

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


  1. (略)


  1. 创建两个包: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充分体现了面向对象的思想, 需要多思考。

相关文章
|
9天前
|
缓存 监控 Java
Java 并发编程的艺术:深入理解 ExecutorService
【4月更文挑战第21天】 在 Java 中,处理并发任务是一项挑战,但也至关重要。本文将深入探讨 Java 的 ExecutorService,这是一个强大的工具,用于管理和执行异步任务。我们将详细解析其内部工作原理,以及如何有效利用它来提升应用程序的性能和响应性。通过实例演示,我们将揭示 ExecutorService 的最佳实践,并展示如何避免常见的并发陷阱。
|
9天前
|
缓存 Java 调度
Java并发编程学习10-任务执行与Executor框架
【4月更文挑战第12天】本篇 重点讲解任务执行和 Executor框架的基础知识
21 4
Java并发编程学习10-任务执行与Executor框架
|
2天前
|
存储 SQL 安全
Java 安全性编程:基本概念与实战指南
【4月更文挑战第27天】在当今的软件开发领域,安全性编程是一个至关重要的方面。Java,作为广泛使用的编程语言之一,提供了多种机制来保护应用免受常见的安全威胁。本博客将探讨 Java 安全性编程的基本概念,并通过实际示例来展示如何实现这些安全措施。
10 3
|
22小时前
|
Java
Java中的条件语句结构在编程中的应用
Java中的条件语句结构在编程中的应用
4 0
|
22小时前
|
安全 Java
Java修饰符在编程中的应用研究
Java修饰符在编程中的应用研究
6 0
|
1天前
|
Java 关系型数据库 MySQL
【JDBC编程】基于MySql的Java应用程序中访问数据库与交互数据的技术
【JDBC编程】基于MySql的Java应用程序中访问数据库与交互数据的技术
|
2天前
|
Java 开发者 UED
Java 异步和事件驱动编程:探索响应式模式
【4月更文挑战第27天】在现代软件开发中,异步和事件驱动编程是提高应用性能和响应性的关键策略。Java 提供了多种机制来支持这些编程模式,使开发者能够构建高效、可扩展的应用程序。
14 4
|
2天前
|
设计模式 Java
Java 设计模式:混合、装饰器与组合的编程实践
【4月更文挑战第27天】在面向对象编程中,混合(Mixins)、装饰器(Decorators)和组合(Composition)是三种强大的设计模式,用于增强和扩展类的功能。
9 1
|
2天前
|
Java
Java 事件驱动编程:概念、优势与实战示例
【4月更文挑战第27天】事件驱动编程是一种编程范式,其中程序的执行流程由外部事件的发生而触发或驱动。
9 0
|
2天前
|
Java Shell API
Java 模块化编程:概念、优势与实战指南
【4月更文挑战第27天】Java 模块化编程是 Java 9 中引入的一项重大特性,通过 Java Platform Module System (JPMS) 实现。模块化旨在解决 Java 应用的封装性、可维护性和性能问题
9 0