五、对象和类

1、类(CLass)

类是构造对象的模板和蓝图。用类构造(construct)对象的过程称之为创建类的实例(instance)

通过扩展一个类来建立另一个类的过程称之为继承(inheritance)

1.1、对象

三个特性:

对象的行为是用可调用的方法定义的

对象的状态可能会随着时间而发生改变

每个对象都有一个唯一的身份(identity)

1.2、识别类的方法

首先你从设计类开始,然后往每个类中添加方法

识别类的简单规则:分析问题或者说类名一般用名词,而方法是动词或者动名词组合。

1.3、类之间的关系

  1. 依赖(dependence):如果一个类方法操纵另一个对象,则说明一个类依赖另一个类
    [备注]:应该尽可能地将相互依赖的类减至最少,也就是让类之间的耦合度最小。
  2. 聚合(aggregation):类A的对象包含着类B的对象。
  3. 继承(inheritance):类A扩展类B,A不仅包含从类B继承的方法,还会拥有一些额外的功能。
  4. 其他关系
关系 箭头
继承
接口实现
依赖
聚合
关联
直接关联

2、使用预定义类

2.1 对象与对象的变量

使用构造器(constructor)构建一个新实例。构造器是一种特殊的方法,用来构造并初始化对象。构造器的名字应该和类名相同,要想构造一个新的对象,就需要在构造器前面加上new操作符。

Date date = new Date();
// new Date()构造了一个Date类型的对象,并且它的值是对新创建对象的引用,这个引用储存在变量date中。

表示时间点Date类,表示日历LocalData类。

2.2 更改器方法与访问器方法

LocalDate aThousandDayLater = newYearEve.plusDays(1000);

更改器方法(mutator method):方法前的对象值会改变
访问器方法(accessor method):只访问对象而不对对象进行修改。

3、用户自定义类

3.1 Employee类

public Employee(String n,double s,int year,int month,int day);
public String getName();
public Double getSalary();
public LocalDate getHireDay();

这个类的所有方法被标记为public,关键字public意味着任何类的任何方法都可以调用这些方法(共有4种访问级别)

3.2 构造器

public Employee(String n,double s,int year,int month,int day){
        name = n;
        salary = s;
        hireDay = LocalDate.of(year, month, day);
}

构造器与类同名。在构造Employee类的对象时,构造器会运行,以便将实例域初始化为所希望的状态。

构造器与其他的方法有一个重要的不同。构造器总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。

3.3 隐式参数和显式参数

方法用于操作对象以及存取它们的实例域。

public void raiseSalary(double byPercent){
        double raise = salary * byPercent /100;
        salary += raise;
    }
// raiseSalary方法有两个参数,第一个参数成为隐式参数(implict)参数,是出现在方法名前的Employee类对象。第二个参数位于方法名后面括号中的数值,这是一个显式(explicit)参数。

在每一个方法中,关键字this表示隐式函数。如果需要的话,可以改为

public void raiseSalary(double byPercent){
        double raise = this.salary * byPercent /100;
        this.salary += raise;
    }
    // 可以将实例域与局部变量明显的区分开来。

如果在类的内部定义方法,这个方法将自动地成为内联方法(inline)方法。

3.4 封装的有点

public String getName(){
        return name;
    }

    public Double getSalary(){
        return salary;
    }

    public LocalDate getHireDay(){
        return hireDay;
    }

猜你喜欢

转载自www.cnblogs.com/hasz/p/12234825.html