类 - 下篇
掌握继承的用法与特点
理解方法重写与多态
掌握 super 关键字的使用
核心讲解
(1)继承
子类继承父类的属性和方法,实现代码复用。Java 是单继承,一个类只能有一个父类。
关键字:
extends子类拥有父类所有非 private 的属性和方法
子类可以扩展自己的属性和方法
所有类默认继承 Object 类
(2)super 关键字
代表父类对象,三个作用:
访问父类的属性:
super.name调用父类的方法:
super.method()调用父类的构造方法:
super(参数),必须在子类构造第一行
(3)方法重写(Override)
子类重写父类的方法,实现不同的行为。
方法名、参数、返回值必须和父类一样
访问权限不能比父类更严
注解
@Override,用来标识重写,编译器检查
(4)多态
同一个方法,不同对象有不同的实现。
前提:继承、重写、父类引用指向子类对象
好处:扩展性强,新增子类不用改原有代码
代码示例
// 父类
class Animal {
String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + "在吃东西");
}
public void shout() {
System.out.println("动物叫");
}
}
// 子类:猫
class Cat extends Animal {
public Cat(String name) {
super(name); // 调用父类构造
}
// 重写叫的方法
@Override
public void shout() {
System.out.println(name + "喵喵叫");
}
// 子类特有方法
public void catchMouse() {
System.out.println(name + "抓老鼠");
}
}
// 子类:狗
class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
public void shout() {
System.out.println(name + "汪汪叫");
}
}
public class ExtendsDemo {
public static void main(String[] args) {
// 多态:父类引用指向子类对象
Animal a1 = new Cat("小花");
Animal a2 = new Dog("大黄");
a1.eat(); // 继承父类的方法
a1.shout(); // 调用重写的方法
a2.eat();
a2.shout();
// 向下转型,调用子类特有方法
Cat cat = (Cat) a1;
cat.catchMouse();
}
}
常见误区
继承私有属性:子类不能继承父类的 private 属性和方法,只能通过 public/protected 方法访问
重写改方法名:重写必须和父类方法名参数完全一样,不然就是重载不是重写
super () 随便放:super 调用父类构造必须在子类构造第一行
向下转型强转失败:不是对应的子类对象强转会报 ClassCastException,先判断
instanceof
课后练习
定义父类 Person,子类 Teacher 和 Student
父类有 name、age 属性和 introduce 方法,子类重写 introduce
子类有自己特有方法,老师讲课、学生学习
用多态创建不同对象,调用方法测试

