什么是继承
- 继承是面向对象编程思想的主要特征,java通过继承实现代码的复用。
子类访问父类
- 实现类继承关系的父子类,在创建子类对象时,无论是调用无参构造还是有参构造,都会默认先创建父类对象,并且是通过父类的无参构造完成实例化的。
- super 用作子类访问父类的属性和方法。
- 访问属性” super.属性名 “
- 访问方法” super.方法名() “
子类访问权限
子类只能访问父类的public和protected修饰的属性和方法。
方法重写
- 子类在继承父类方法的基础上,对父类方法重新定义并覆盖操作叫做方法重写。
- 方法重写的规则
- 父子类的方法名相同。
- 父子类方法参数列表相同。
- 子类方法返回值与父类方法返回值类型相同或者是其子类。
- 子类方法的访问权限不能小于父类。
public class A {
public void show() {
}
}
//*********************************************************************//
public class B extends A {
public void show(){
System.out.println("Happy!");
}
}
//*********************************************************************//
public class Test {
public static void main(String[] args) {
B b = new B();
b.show();
}
}
- 方法重写 VS 方法重载
进阶
用继承进行设计
class Actor {
public void act() {
System.out.println("act()...........");
}
}
class HappyActor extends Actor {
public void act() {
System.out.println("HappyActor");
}
}
class SadActor extends Actor {
public void act() {
System.out.println("SadActor");
}
}
class Stage {
private Actor actor = new HappyActor();
public void change() {
actor = new SadActor();
}
public void performPlay() {
actor.act();
}
}
public class Transmogrify {
public static void main(String[] args) {
Stage stage = new Stage();
stage.performPlay();
stage.change();
stage.performPlay();
}
}