继承
继承的格式;
- 通过extends关键字可以实现类与类的继承
class 子类类名 extends 父类类名 {}
被继承的这个类称为父类,基类或者超类
继承的这个类称为子类或者派生类
继承的特点:
1.通过extends关键字实现,类与类之间建立了联系
违背了高内聚,低耦合的原则
2.继承的本质就是对多个类的共性的代码的抽取
3.类是对多个对象的抽象,继承是对某一批类的抽象。
4.继承是一把双刃剑,慎用
继承的特点:
1.通过extends关键字实现,类与类之间建立了联系
违背了高内聚,低耦合的原则
2.继承的本质就是对多个类的共性的代码的抽取
3.类是对多个对象的抽象,继承是对某一批类的抽象。
4.继承是一把双刃剑,慎用
设计原则;
高内聚,低耦合
对扩展开放,多修改关闭
面向对象思想
如何使用继承?
1.一般都是在写完代码之后,观察发现你的代码出现了重复,这个时候抽取重复代码到父类中即可
2.当设计某个类非常复杂的时候,可以使用继承
继承的注意事项:
1.单一继承性
2.支持多层继承
3.如果父类使用priavate修饰成员,子类不能够继承
4.如果一个子类继承了父类的所有方法,还可以有自己的方法
5.当子类属性和父类属性重名的时候,子类会覆盖父类继承的同名属性
6.子类不会继承父类的构造方法
使用继承的步骤;
1.先书写所有的子类
2.观察多个子类是否存在共性代码
3.将共性代码抽取到父类中
4.子类继承父类,将共性代码删除
5.验证是否满足 A is a B关系
A is a B 继承
A has a B 组合 : A类有B类的控制权
在这里插入代码片
package com.extendsdemo;
import javax.swing.JFrame;
public class ExtendsDemo01 {
public static void main(String[] args) {
PrimaryStudent ps = new PrimaryStudent();
XyrFrame frame = new XyrFrame();
frame.setSize(100, 200);
frame.setLocationRelativeTo(null);
frame.setTitle("植物大战僵尸");
frame.setVisible(true);
ps.playMobile();
}
}
class Dog {
}
class Teacher {
Dog dog;
}
class XyrFrame extends JFrame {
}
class Person extends Object {
}
class Student extends Person {
public Student() {}
String name = "World";
int age;
private double money;
double height;
public void payMoney(double money) {
this.money = money;
}
}
class PrimaryStudent extends Student {
public PrimaryStudent() {}
String name = “Hello”;
public void playMobile () {
System.out.println(“MiddleStudent.playMobile()” + name);
}
}
class MiddleStudent extends Student {
public void playGame() {
System.out.println(“MiddleStudent.playGame()”);
}
}
class BigStudent extends Student{
public void sleep() {
System.out.println(“BigStudent.sleep()”);
}
}