文章目录
面向对象程序设计概述
面向对象的程序是由对象组成,每个对象都包含对用户公开的特定功能部分和隐藏的实现部分。
类
类是构造对象的模板。
由类构造对象的过程称为实例化。
封装
封装是处理对象的重要概念。一句话说,封装就是将数据和行为组合在一个保重,并对使用者隐藏具体的实现方式。其中,数据称为实例字段,行为称为方法。
实现封装的关键在于:绝不能让类中的方法直接访问其他类的实例字段。程序只能通过对象的方法与对象数据进行交互(setter/getter方法)。
继承
面向对象编程有一个特别的优势:就是可以通过扩展一个类来构建新类。
在扩展一个已有的类后,新类拥有已有类的全部属性和方法,所以新类只需要提供新的属性和方法即可。
对象
一个对象,有三种特性:
- 对象的行为:对象能使用什么方法
- 对象的状态:调用方法后由什么响应
- 对象的标识:如何区分不同的对象
对象的状态是不会自己改变,而是通过对象的行为而改变。
每个对象都有一个唯一的标识。
类之间的关系
类与类之间最常见的关系有三种:
-
依赖(uses-a)
一个类的方法使用或者操纵另一个类的对象。
这种关系最为常见,但是会带来系统的强耦合,需要尽量避免。
Java中,依赖关系一般表现为局部变量,方法的形参或者对形态方法的调用。
-
聚合(has-a)
一个类的对象包含另一个类的对象。
Java中,聚合关系一般体现为局部变量。
-
继承(is-a)
使用类
对象与对象变量
要想使用类,必须构造该类的对象,并指定其初始状态。然后对对象应用方法。
Java中,使用构造器来构造并初始化对象。
构造器有如下特点:
- 构造器与类同名
- 每个类都可以由一个或以上的构造器
- 构造器可以无参,也可以有参
- 构造器没有返回值
- 构造器总是和new操作符一起使用
隐式参数和显示参数
使用对象调用方法时,方法都会由两个参数。
TestClass tc = new TestClass();
tc.setId(1);
上面代码中我们可以看到,调用对象tc的setId方法, 传入了一个参数“1”这个参数就是显示参数。
⭐️隐式参数,就是指出现在方法名前的对象。在方法中,可以使用this关键字指示隐式参数。
再说封装
前面讲过,封装就是对使用者隐藏具体的实现方式。下面是一个最简单的封装类。
public class TestClass {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {