一.类与类的关系
程序当中,类与类之间可以继承,用来模拟一般和特殊
程序中的类是对现实中一类事务的抽象
比如Animal是一个类,他有嘴、眼等属性,还有吃、睡等方法
一个Dog类继承Animal类,Dog类拥有Animal类的所有可继承的属性和方法还可以定义自己的属性和方法
定义一个咬的方法,这个方法只在Dog类中有
class
Animal {
public String mouth;
public String eye;
public void eat(){
//eat
}
public void sleep(){
//sleep
}
}
class
dog extends Animal{
//定义新的方法,并拥有mouth,eye和eat(),sleep()方法
public void bite(){
//bite
}
}
二.对象与对象的关系
对象和对象之间有公共的属性和方法 但是属性他们的值可以不同
他们都是某个类的实例
他们都是具体的事务,是对现实对象的描述,摸拟现在中的对象
1. 泛化:父类的引用指向子类的对象
class Animal {
public void eat() {
System.out.println("吃东西");
}
}
class Cat extends Animal {
public void eat() {
System.out.println("吃鱼");
}
}
class AnimalTest {
public static void main(String[]
args) {
//基类的引用指向子类的对象
Animal cat = new Cat();
cat.eat();//调用子类(Cat类)的eat()方法
}
}
2. 依赖:
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
例如,一个人练习打字,要借助电脑来完成打字
class Person {
public void type(Computer computer) {
//人要打字,需要通过电脑
computer.type();
}
}
class Computer {
public void type(){
}
}
3. 关联
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。关联关系是类之间的一种关系
关联关系所涉及的两个对象是处在同一个层次上的,
比如:老师和学生是关联关系,每个学生对应特定的老师,每个老师对应一些特定的学生。
public class Teacher{
private Student student;
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
//老师讲课
public void talk(){
student.listen();
}
}
class Student{
//学生听课
public void listen(){
}
}
4. 组合
也是一种特殊的关联,也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。
class People
{
public static void main(String args[])
{
Heart
myHeart = new Heart();
while(true)
{
myHeart.beat();
}
}
}
class Heart{
public void beat(){
}
}
5. 聚合
是一种特殊的关联,聚合表示整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。
public class Computer{
private CPU cpu;
public CPU getCPU(){
return cpu;
}
public void setCPU(CPU cpu){
this.cpu=cpu;
}
//开启电脑
public void start(){
cpu.run(); //cpu运作
}
}
聚合和组合的区别:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。