继承的学习和使用
继承概述
- 继承是面向对象三大特性之一(封装, 继承, 多态)
- 继承使子类拥有父类的属性和方法, 并且可以定义自己独有的属性和方法
继承的格式
关键字:extends
public class 子类名 extends 父类名{ }
示例
父类Animal类
public class Animal {
private String color;
private int age;
public void eat(String something) {
}
public Animal() {
}
public Animal(String color, int age) {
this.color = color;
this.age = age;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
子类Dog类
public class Dog extends Animal {
private String name;
public Dog() {
}
public Dog(String color, int age, String name) {
super(color, age);
this.name = name;
}
public void lookHome() {
System.out.println(super.getColor()+"狗在看家");
}
@Override
public void eat(String something) {
System.out.println("狗吃" + something);
}
}
以上例子中的知识点
- 子类的构造函数中,第一句程序默认会调用父类的无参构造方法,用 super()表示。因为子类继承父类的数据,就必须先对父类的数据初始化。
- 子类调用并重写了父类的方法 eat(),可以根据子类的特点,写自己的内容,也可以不重写,直接使用父类的方法。
- 子类定义了自己特有的方法 lookHome(),和特有的属性 name。
继承的使用场景和优劣
- 当有两个类 A和B,且A是B的 一部分,就可以让A继承B,例如狗和动物,香蕉和水果,学生和人。
- 优点:简化代码。提高代码复用性和维护性
- 缺点:类与类之间产生了联系,耦合性增加,父类变化会导致子类跟着变化
注意事项
- java类中只支持单继承,不支持多继承,但可以支持多层继承,例如:孙子 extends 爸爸 extends 爷爷。