1:为什么使用继承?
将重复代码 抽取到父类中,方便修改代码,减少代码量
2:如何使用继承?
使用继承
编写父类 class Pet { //公共的属性和方法 }
编写子类,继承父类 class Dog extends Pet { //子类特有的属性和方法 }
理解继承
子类 访问父类成员
访问父类构造方法 super(); super(name);
访问父类属性 super.name;
访问父类方法 super.print();
3:子类可以继承父类的所有些资源吗?
不能被继承的父类成员:private成员,
子类与父类不在同包, 使用默认访问权限的成员,构造方法
4:访问修饰符 private friendly(默认) protected public
本类 T T T T
同包 F T T T
子类 F F T T
其他 F F F T
5:多重继承关系的初始化顺序是怎样的?
父类属性——父类构造方法——子类属性——子类构造方法
6:何时使用继承?
继承与真实世界类似(符合is-a关系的设计使用继承 ),
继承是代码重用的一种方式(将子类共有的属性和行为放到父类中)
7:方法重写的规则
方法名相同 参数列表相同 返回值类型相同或者是其子类 访问权限不能严于父类
8:方法重载和方法重写:
位置 方法名 参数表 返回值 访问修饰符
方法重写:子类 相同 相同 相同或者是其子类 不能比父类更严格
方法重载:同类 相同 不相同 无关 无关
PS :构造方法不能被继承所以不能被重写。
9:super关键字来访问父类的成员
super只能出现在子类的方法和构造方法中
super调用构造方法时,只能是第一句
super不能访问父类的private成员
10:抽象类:实例化对象没有意义的类。
Java中也使用抽象类,限制实例化
11抽象方法:
abstract也可用于方法——抽象方法
抽象方法没有方法体 抽象方法必须在抽象类里
抽象方法必须在子类中被实现,除非子类是抽象类
12:final用法
Penguin类不希望再被其他类继承 使用final类
方法不希望被重写 使用final方法
属性值不希望被修改 使用常量
final修饰符:
修饰的类,不能再被继承
修饰的方法,不能被子类重写
修饰的变量将变成常量,只能在初始化时进行赋值