继承
概述
- 多个类存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
- 通过extends关键字可以实现类与类的继承。
- 单独这个类成为父类,基类或者超类,多个类可以成为子类或者派生类。
- 有了继承之后,我们定义一个类的时候。可以在一个已经存在类的基础上,还可以定义新的成员。
格式
public class 子类 extends 父类(){}
继承的优点
- 提高了代码的复用性
- 提高了代码的维护性
- 让类与类之间产生了联系,是多台的前提
继承的缺点
- 让类与类产生了关系,类之间的耦合性增强,违背了开发原则,即
高内聚,低耦合
代码示例
Person类
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person() {
}
public void study(){
System.out.println("学习");
}
public void eat(){
System.out.println("吃饭");
}
}
Students类
public class Students extends Person{
public Students() {
}
@Override
public void study() {
super.study();
System.out.println("学生学习");
}
@Override
public void eat() {
super.eat();
System.out.println("学生吃饭");
}
}
Teachers类
public class Teachers extends Person{
public Teachers() {
}
@Override
public void study() {
super.study();
System.out.println("老师学习");
}
@Override
public void eat() {
super.eat();
System.out.println("老师吃饭");
}
}
继承中成员变量的特点
在子类方法中访问一个变量
- 首先在子类局部范围找
- 然后在子类成员范围找
- 最后在父类成员范围找
- 如果还没有找到就会报错
super和this
this
代表本类对象的引用
super
代表父类的存储空间。父类对象的引用。
用法
- 访问成员变量:
- this.成员变量
- super.成员变量
- 访问构造方法:
- this(...)
- super(...)
- 访问成员方法:
- this.成员方法()
- super.成员方法()
方法重写
- 父类私有方法不能重写
- 子类重写父类方法时,访问权限不能更低。子类重写父类方法时,建议访问权限一模一样。
多态
定义
某一个事物,在不同时刻表现出来的不同状态
前提和体现
- 有继承关系
- 有方法重写
- 有父类引用指向子类对象
代码示例
Animal类
public class Animal {
public void eat(){
System.out.println("动物吃");
}
}
Cat类
public class Cat extends Animal{
public void eat(){
System.out.println("猫吃");
}
}
Test类
public class Test {
public static void main(String[] args) {
Animal a = new Cat();
a.eat();
}
}
网友评论