zoukankan      html  css  js  c++  java
  • 《Java核心技术 卷I》读书笔记三

    章节内容

    • 面向对象程序设计
    • 使用预定义类
    • 用户自定义类
    • 静态域和静态方法
    • 方法参数
    • 对象构造
    • 类路径
    • 文档注释
    • 类设计技巧

    面向对象程序设计

    面向对象程序设计(OOP)已经取代了结构化程序设计。java是完全面向对象的。
    OOP中我们不关心对象的具体实现,只要能满足需求。

    类class是构造对象的模板或蓝图,由类构造对象的过程被称为创建类的实例。
    java中所有类都继承Object类

    对象

    对象即类的实例,拥有类的所有方法

    类之间的关系

    最常见的关系有:

    • 依赖 一个类的方法操纵另一个类的对象
    • 聚合 一个类的对象包含另一个类的对象
    • 继承 所有类都来源于Object类

    使用预定义类

    在java中一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。

    用户自定义类

    程序员习惯于将每个类存在一个单独的源文件中。
    java编译一个类文件如果使用了其他类,就会查找该类的class文件,如果没有找到就会自动搜索java文件并编译,如果java文件较已有的class文件有更新,java编译器会自动重新编译这个文件。
    java的构造器可以有多个,没有返回值,可以有任意个参数,与类同名,伴随着new一起被调用。
    封装的好处:

    • 改变内部实现,对其他程序不可见
    • 可以在封装方法上加业务逻辑执行错误检查
      final修饰符表示构建对象时必须初始化这样的。
      静态域只属于类,不属于每个对象,所以每个类只有一个静态域static
      static和final经常一起使用,比如Math类中的PI:
    public class Math {
          public static final double PI = 4.141592657....;
    }
    

    比如标准输出:

    public class System {
          public static final PrintStream out=....;
    }
    

    System类中有个setOut方法,虽然out域是final的,但是setOut是一个本地方法,不是用java语言实现的,可以绕过java语言的存取控制机制。
    静态方法:不能向对象实施操作的方法,使用静态方法的情况:

    • 一个方法不需要访问对象的状态,所需参数都是通过显式参数提供,Math.pow,main方法
    • 一个方法只需要访问类的静态域

    方法参数

    两种类型:

    • 基本数据类型
    • 对象引用
      java的对象采用的不是引用调用,实际上对象引用是按值传递的。创建一个交换两个对象引用的方法是不能生效的
      java中方法参数的使用情况:
    • 一个方法不能修改一个基本数据类型的参数
    • 一个方法可以改变一个对象参数的状态
    • 一个方法不能让对象参数引用一个新的对象

    对象构造

    重载:一个对象有多个方法有相同的名字,不同的参数
    方法的签名:方法名、参数类型和个数
    构造器中没有显式给域赋予初值的,就被自动赋予默认值,0,false,null等
    如果没有编写任何构造器,则系统会提供一个无参数构造器,如果提供了至少一个构造器,则不会自动提供无参数构造器。
    构造器调用另一个构造器可以用this关键字
    初始化数据域的方法:

    • 构造器中设置值
    • 声明中赋值
    • 在初始化块中赋值
      首先运行初始化再运行构造器

    调用构造器具体处理步骤:

    1. 所有数据域被初始化为默认值
    2. 按照在类声明中出现的次序,一次执行所有域初始化语句和初始化块
    3. 如果构造器第一行调用了其他构造器,则执行其他构造器
    4. 执行构造器的主体

    因为java有自动垃圾回收,所以java不支持析构器
    如果对象中使用了内存外的其他资源,可以在finalize方法中回收。finalize方法将在垃圾回收器清除对象之前调用。

    java使用包package将类组织起来,使用包的主要原因是确保类名的唯一性
    java通过包导入类,*表示导入一个包的所有类文件
    静态导入可以导入静态方法和静态域的功能。

    import static java.lang.System.*
    
    out.println("hello world");
    exit(0);
    

    包中的类文件应该放在和完整包名匹配的子目录中。
    java的域和方法的作用域默认为包作用域。

    类路径

    为了使类能够被多个程序共享,类文件可以存储在jar文件中。
    为了使类可以被多个程序共享,需要做到以下几点:

    1. 把类放到一个目录中
    2. 将jar文件放在一个目录中
    3. 设置类路径。类路径是所有包含类文件的路径的集合
      可以用-classpath或-cp指定类路径,也可以通过设置CLASSPATH环境变量来完成。

    文档注释

    java注释可以到处javadoc文档

    类设计技巧

    1. 一定要保证数据私有
    2. 一定要对数据初始化
    3. 不要在类中使用过多的基本类型
    4. 不是所有的域都需要独立的域访问器和修改器
    5. 将职责过多的类进行分解
    6. 类名和方法名要能体现职责
    7. 优先使用不可变类
  • 相关阅读:
    shell 实现word count
    jvm 参数调优
    Java注解处理器(转)
    JVM -XX: 参数介绍(转)
    如何在Linux下重命名多个文件
    Kafka学习之broker配置(0.8.1版)(转)
    linux 历史命令用法(转)
    hive-site.xml 参数设置
    Hadoop-2.2.0 + Hbase-0.96.2 + Hive-0.13.1(转)
    正则表达式通过Unicode属性匹配
  • 原文地址:https://www.cnblogs.com/prelude1214/p/13688349.html
Copyright © 2011-2022 走看看