一、继承关系
1.文字描述
一个类或者接口继承了另一个类或者接口,增加了在原有的方法和属性上增加了新的方法和属性。
- 继承描述的是一种能力:可以使用现有类的所有功能,并在无需重新编写原有类的情况下进行功能上的扩展。
- 要使用继承,必须满足 is-a 原则(代码复用),定义的语法为:子类 extends 父类。
- 子类:又称为派生类,子类一定具有父类的全部属性与行为,并且拥有的属性更多,具有的行为更加丰富,表示的范围更小。
- 父类:又称为超类。
2.代码描述
class A { }
class B extends A { }
class C extends B { }
class Person {
private String name;public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class Student extends Person {
public void fun() {
System.out.println(getName());
}
}
public class JiCheng4 {
public static void main(String[] args) {
Student stu = new Student();
stu.setName("张三");
System.out.println(stu.getName());
stu.fun();
}
}
二、聚合关系
1.文字描述
聚合关系 has a,关联关系较弱,后期使用不会因为对象的删除而删除。
- 聚合代表了has-a的关系;
- 并且是一种单向关系。单向的。比如说,公寓里面有学生,但是学生里面不能有公寓,这是一种天生的单向关系;
- 在聚合的关系中,两种实例是可以单独存在的,不会相互影响,一个实例的存在与否不会影响与之聚合的实例的存在与否。
2.代码描述
class A{}
class B{
A a;//成员变量引入了A类
B(A a){
this.a = a;
}
}
三、组合关系
1.文字描述
组合关系contains a,关联关系较强,整体和部分是不可分割的,他们又共同的生命周期。
- 代表这一种part-of的关系,就是一个类是另一个类的一部分;
- 在组合的关系中,实例是彼此依赖的。;
- 当两个实例是组合关系,它们就是高度耦合的,一个对象必须依赖另一个对象的存在而存在。
2.代码描述
class A{}
class B{
A a;//成员变量引入了A类
B(){
this.a = new A();
}
}