Core Java笔记 1.对象与类

本章重点:

  • 面向对象程序设计
  • 使用现有Java类
  • 自定义类

面向对象程序设计

面向对象核心概念:
class
instance(instance fields, method, constructor)

面向对象的三个特征:

  1. encapsulation
  2. inheritance
  3. polymorphism

类之间的关系:

  • 依赖(uses-a): 减少类之间耦合。
  • 聚合(has-a)
  • 继承(is-a)

使用现有类

构造器、new关键字、getter/setter(accessor/mutator method)


自定义类

最简单的类定义形式

class ClassName {
    constructor1
    constructor2
    ...
    method1
    method2
    ...
    field1
    field2
}

多个源文件的使用

Employee.java、EmployeeTest.java。EmpolyeeTest.java依赖Employee.java:javac EmployeeTest.java 即可。

原理:java编译器发现EmployeeTest.java使用了Employee类时会查找Employee.class的文件,如果没有找到这个文件或者Employee.java比Employee.class新,就会自动搜索Employee.java,然后对它编译。

简要剖析java类:

  1. java访问权限: public、protected、private、default
  2. java constructor
  3. 方法的implicit参数和explicit参数(this就是implicit参数)
  4. private fields && accessor, mutator
    基于类的访问权限:方法可以访问所属类的私有特征(包括private fields和private methods)
  5. final
    通常final应用于类的primitive or immutable class(不可变类)类型的fields。比如: String就是一个immutable class, 而Date就不是immutable class

static

静态域: private static int nextId = 1;
静态常量: private static final int PI = 3.14;
静态方法: Math.pow(x, a);

静态方法有一个常见的用途:Factory方法

NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();
NumberFormat percentFormatter = NumberFormat.getPercentInstance();
String currency = currencyFormatter.format(0.1);
String percent = currencyFormatter.format(0.1);

Factory方法的两个原因:

  1. 无法命名构造器.
  2. 当使用构造器时,无法改变所构造的对象类型,而Factory方法可以返回该类的子类实例.

对象构造

  1. overloading. Java允许重载任何方法,包括构造器.
  2. 默认构造器. 如果一个类没有一个显式构造器,系统会生成一个默认构造器,所有的实例域会被设置成默认值,最好不要使用默认构造器.
  3. 域显式初始化.
  4. 调用另一个构造器(this(...)).
  5. java可以在三个地方初始化fields:构造器、声明中、初始化块(initialization block).

初始化对象域的步骤:

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

类设计技巧

  1. 一定将数据设计为private.
  2. 一定要对数据初始化.
  3. 将职能过多的类进行拆分.
  4. 类名和方法名能够体现它们的职责.
posted @ 2015-04-30 16:05  nil2inf  阅读(662)  评论(2编辑  收藏  举报