Java对象与类

1.类

  • 封装(encapsulation):封装的关键在于绝对不能让类中的方法直接地访问其他类的实例域(instance field, 对象中的数据称为实例域)
  • 对象变量并没有实际包含一个对象,而仅仅是引用一个对象。所有的Java对象都存储在堆中
  • 在一个源文件中只能有一个公共类,可以有任意非公共类,文件名必须与public类名字相同
  • 访问器方法:只访问对象而不修改对象的方法
  • Java编译器会监视调用那些简洁、经常被调用、没有被重载以及可优化的方法
  • 方法可以访问所属类的私有特性,而不仅限于访问隐式参数的私有特性
class Employee {
    private String name;   //私有域
    public boolean equals(Employee other) {
        return name.equals(other.name);  //访问other.name合法
    }
}

2.静态域与静态方法

  • 静态域:该类的所有实例共享同一个域
class Employee {
    private static int nextId = 1;  //静态域
    private int id;
}
  • 静态常量:static表示该域为所有类共享(如 Math.PI
    final表示不可修改该变量的值
pulic static final double PI = 3.1415926535898;
  • 静态方法:不能向对象实施操作的方法
    使用静态方法的两种情况:
    1. 该方法不需要访问对象状态
    2. 该方法只需要访问类的静态域

3.对象构造

  • 默认域初始化:数值为0,布尔值为false,对象引用为null
  • 调用构造器的顺序
    1)所有数据初始化为默认值(0,false,null)
    2)按照类声明中出现顺序,依次执行初始化语句和初始化块
    3)执行构造函数
  • 静态初始化块:用来初始化静态域
static {        //静态初始化块
    Random generator = new Random();
    nextId = generator.nextInt(10000);
}
  • 析构方法 finalize,将在垃圾回收器清楚对象之前调用,但很难知道其具体调用时间,所以不要指望在finalize中回收短缺资源。

4.包

  • 一个类可以使用所属包中的所有类,以及其他包中的公有类
  • 包作用域:没有指定public或private的类,方法或变量,可以被同一个包中的所有方法访问。
  • JAR文件:Java归档文件

5.文档注释

  • 域注释:只需要对公有域(通常指的是静态常量)建立文档
/**
 *The Hearts card suit
 */
 public static final int HEARTS = 1;
  • @author 姓名
  • @version 版本
  • @since 始于,如 @since version 1.7.1
  • @see 引用,三种方式如下
/**
 * 展开与收起之间的状态
 * @see BaseResponse#getDesc() 
 * @see 网址
 * @see "Core Java2 volume 2"
 */

6.类设计技巧

  • 优先使用不可变的类

你可能感兴趣的:(Java对象与类)