1、类间关系
在面向对象的系统中,通常不会存在孤立的类,类之间、对象之间总是存在各种各样的关系,按照UML(Unified Modeling Language,统一建模语言)规范,类之间存在六种关系:继承 、实现 、依赖 、关联 、聚合 、组成 。
UML的六种关系中,继承和实现是一种纵向的关系,而其余四种是横向关系。其中关联、聚合、组成关系在代码上是无法区分的,更多的是一种语义上的区别。
继承
在Java中,被继承的类叫父类(parent class)或超类(super class),继承父类的类叫子类(subclass)或派生类(derived class)。
在Java中,关键字“extends”表示继承,后面紧跟父类的类名,如下 :
public class Person {
private String name;// 姓名
private int age;// 年龄
private String gender;// 性别
……//省略get和set方法
}
class Teacher extends Person {
private float salary;// 薪酬
private String department;// 部门
……//省略get和set方法
}
class Student extends Person {
private int[] score;// 成绩
private String grade;// 年级
……//省略get和set方法
}
重写
当一个子类继承了一个父类时,可以在子类中直接使用父类的属性和方法。如果父类的方法无法满足子类的需求,则可以在子类中对父类的方法进行改造,也称作重写(override)。重写是Java多态性的另一种体现。
重写的原则
重写的方法的签名必须要和被重写的方法的签名完全匹配
重写的方法的返回值必须和被重写的方法的返回一致或者是其子类;
重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;
私有方法不能被重写
子类重写父类方法的过程中,可访问性只能一样或变的更公开。
public class Base {
public void print() {
System.out.println(