继承:
生活中的继承:继承财产,钱不用自己挣,自己也能花!
皇位继承:继承江山,江山不用自己打,继承过来也能坐。
软件中的继承:继承代码,代码不用自己写,继承过来也能用。
继承适用性:当多个类之间存在一个重复(共性)的代码时,且它们在概念上达到一致(is a),则使用继承来优化冗余重复的代码。
继承的关键字: extends ,在类名的后面 加上当前关键字 后 然后再加上 要继承的父类名即可实现继承。
1.父类/超类:所有子类共性的属性和行为!
2.子类/派生类:存放自己的特有属性和行为!
3.子类不仅仅能访问自己的内容,还可以访问父类中的内容。(继承过来就是自己有)
4.父类不能够访问子类的内容(只可以访问自己定义的内容)
5.继承具有传递性。
6.继承具有单一性。子类只能找一个类来通过extends关键字实现继承(单一继承)
泛化:从多个类中提取冗余代码到父类的过程 称之为泛化.
class Person{ //人类 ----父类
//属性
String name;
int age;
char sex;
//行为
void eat(){
}
void sleep(){
}
}
class Student extends Person{ //学生类
//属性
int stuId;
//行为
void study(){
}
}
class Teacher extends Person{
double salary;
//行为
void teach(){
}
}
class Doctor extends Person{
int level;//职称
//行为
void cut(){
}
}
继承具有传递性:
class 爷爷类{
传家宝
}
class 父亲类 extends 爷爷类{
传家宝
}
class 儿子类 extends 父亲类{
传家宝
}
作业:分析当前项目,7个类之间存在类中都存在重复的属性!代码冗余! 在当前项目包新建一个父类(SeaObject) 海洋对象类。将7各类共性的属性和行为 提取到海洋对象类中!
这7个类删掉重复的属性和行为 通过extends 继承 SeaObject。
package cn.tedu.submarine;
/**
* 海洋对象类 -------7个类的父类!放这7个类共性的属性 和 行为!
* */
public class SeaObject {
//属性
int x;
int y;
int width;
int height;
int speed;
//方法
void step() {
System.out.println("海洋对象在移动......");
}
}