Java学习笔记之对象与类(1/3)
一、类
类(class)是构造对象的蓝图或模板。由类构造(construct)对象的过程就是创建类的实例(instance)的过程。
封装(encapsulation)是与类有关的一个重要概念。形式上来说,封装是把数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。对象的数据称为实例域(instance field),操作数据的过程称为方法(method)。
继承(inheritance)使得Java中的一个类可以通过拓展另一个类而来。实际上,Java中所有的类都是继承了一个最原始的超类——Object。继承而来的新类具有基类的全部属性和方法。
二、对象
对象的三个主要特性:
1.行为(behavior)——对对象施加哪些操作或方法?
2.状态(state)——施加方法时,对象实例域如何变化?
3.标识(identity)——如何辨别具有相同行为和状态的不同对象?
三、类之间的关系
常见的有三种:
1.依赖(uses-a)—— 一个类的方法需要操纵另一个类的对象;
2.聚合(has-a)—— 一个类的对象包含另一个类的对象;
3.继承(is-a)—— 具有另一个类的全部属性和方法,拓展而来,并可以添加额外的功能。
四、自定义类
1. 类定义形式
代码如下 | 复制代码 |
class example { constructor1 constructor2 ... method1 method2 ... field1 field2 ... } |
例如:
代码如下 | 复制代码 |
class Student { //构造器 public Student(String n,int num,int year,int month,int day) { name = n; number = num; GregorianCalendar calendar = new GregorianCalendar(year,month-1,day); birthday = calendar.getTime(); } //方法 public String getName() { return name; } public int getNumber() { return number; } public Date getBirthday() { return birthday; } //域 private String name; private int number; private Date birthday; } |
2. 隐式参数和显式参数
代码如下 | 复制代码 |
public void setNumber(int n) { number = n; }Student student = new Student("Jiankun Lei",136524,1991,1,1); student.setNumber(1000); |
//student为隐式参数,1000为显式参数隐式(implicit)参数,出现在方法名前的类对象;显式(explicit)参数是在方法名后括号中的参数。
3. 基于类的访问权限
记住:方法可以访问所调用对象的私有数据。也就是说一个类的方法可以访问所属类的所有对象的私有数据。
例如可以定义判断两个学生的equals的方法:
代码如下 | 复制代码 |
boolean equals(Student other) { return number.equals(other.number); //number是Student类的私有数据 } |
4. final实例域
将类中的实例域定义为final。构造对象时必须初始化这样的域,构造后,不能再修改。
代码如下 | 复制代码 |
class Student { ... private final String name; } |
5. 静态域与静态方法
静态域:将域定义为static,每个类只能有一个这样的域。它属于类,不属于任何独立的对象。
代码如下 | 复制代码 |
class Employee { ... private int id; private static int nextId; ... }public void setId() { id = nextId; nextId++; } |
补充:Jsp教程,面向对象编程