什么是继承
继承
1.如何继承一个类?
语法:[修饰符]SubClass extends SuperClass{
}
继承通过extends关键字来实现,其中SubClass称作子类,SuperClass 称作父类、基类或者超类。修饰词如果是public,则该类在整个项目中都可见,若无public修饰符则该类只能当前类中可见:不可以使用private 和 protected修饰符。
2.使用继承有什么优点?
解决代码的复用
3.抽象类和抽象的特点是什么?
解决代码重用的手段之一,java只支持单继承,每个类只能有一个父类。
访问修饰符
访问修饰符 | 本类 | 同包 | 子类 | 其他 |
---|---|---|---|---|
private | √ | |||
默认 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
子类与父类的关系
is a /is like a (可拓展)
重写
子类中可以根据需求从父类继承重新编写,称为方法的重写或者方法的覆盖。方法的重写必须满足如下要求:
- 重写方法和被重写方法必须具有相同的方法名
- 重写方法和被重写方法必须具有相同的参数列表
- 重写方法的返回值类型必须和被重写方法的返回值类型相同或者其子类
- 重写方法不能缩小被重写方法的访问权限
重载和重写有什么区别和联系
重载涉及同一个类,方法名相同,参数列表不同与返回值类型,访问修饰符无关。
重写涉及的是子类和父类之间的同名方法,要求方法同名、参数相同、参数列表相同、返回值类型相同(或者其子类)、访问修饰符不能比父类严。
super
super代表对当前对象的直接父类的默认引用。通过super关键字来访问父级成员
super必须出现在子类(子类的方法和构造器)中,而不是其他位置。
可以访问父类的成员,如父类的属性、方法、构造方法。
注意访问的权限限制。
super.name;//直接访问父类的name属性
super.print();//直接访问父类的print()方法
super(name);//直接访问父类对应的构造方法,只能出现在构造方法中。
继承条件下构造方法的调用
- 没有显示调用父类的有参方法,系统会默认调用无参方法
- 在构造方法中,this和super只能出现的第一行,不允许同时出现
- 实例方法中,this和super可以同时存在
abstract(抽象)
抽象类不能被实例化
抽象类中可以没有抽象方法,抽象方法必须在抽象类中
抽象方法(只有方法声明,没有方法实现,要求子类必须重写)的声明:public abstract void print();
可以修饰类和方法,但不能修饰属性和构造方法
不能和private/static同时修饰一个方法,不能和final同时修饰一个方法和类
final关键字
修饰类,不能被继承
修饰属性,为常量,只能赋值一次,常量名所有字母大写
修饰的方法不能被子类重写
可以修饰属性和方法,但不能修饰类和构造方法