-
继承(子类的super指向父类的地址)
-
允许创建分层次等级的类
-
子类继承父类的特征(属性)和行为(方法)
-
只能单继承、多重继承:父类的父类(无多继承:一个子类不能有多个父类)
-
当创建子类的对象时 先创建一个父类的对象
-
super关键字
-
super访问父类的构造方法(包含super的构造方法必须将super写在第一行、this与super不能同时调用别的构造方法)
-
super访问父类的属性
-
super访问父类的方法
-
-
实例:
-
2.
重写(方法的重写)
-
子类与父类的方法名称一样
-
参数列表、返回值类型完全相同
-
访问权限不饿能比父类的被重写方法权限更低
-
父类的成员方法只能被子类重写
-
静态与私有的方法不能被重写(因为继承不到)
重写(override)与重载(overload)的区别:
|
位置
|
参数列表
|
返回值
|
访问权限
|
异常处理
|
重写
| 子父类 |
必须相同
|
必须相同
|
子类权限不能小于父类
|
子类异常范围更小,但是不能抛出新的异常
|
重载
|
一个类中
|
必须不同
|
与返回值无关
|
与返回权限无关
|
与异常无关
|
-
final 关键字
-
final修饰属性、变量
-
局部变量一旦赋值则成为了常量、无法再次进行赋值
-
成员变量(即成员属性)必须在声明时赋值
-
全局常量(public static final)
-
常量的命名规范:单词与单词之间必须使用下划线隔开,单词中所有的字母大写
-
-
final修饰类
-
不可以被继承
-
-
final修饰方法
-
不能被子类重写
-
-
抽象类(含有不确定的方法)
只声明而未实现
-
使用 abstract class 声明
-
不能被实例化:
-
不能直接 new 来建立对象使用
-
必须被子类继承,子类必须覆写(即重写)父类中的所有抽象方法
-
-
抽象方法:
格式:
abstract class
类名
{
//
抽象类
public abstract
void
方法名
() ;
//
抽象方法,只声明而未实现
}
-
常见问题:
-
不能被 final(无子类) 声明
-
不能被 new 来进行创建 但是java在加载类的时候通过构造方法实例化(创建对象)了类的非抽象部分的对象
-
抽象类必须使用 public 或 procted 修饰
-
-
接口
-
如果一个类中的全部方法均为抽象方法、全部属性都是全局常量,那么即可定义为接口
-
interface 接口名称 {
全局常量
;(可以省略 public static final)
抽象方法
;(可以省略 public abstract)
}
-
面向接口的编程思想 (定义与实现的分离)
-
降低程序的耦合性(互相之间的粘性)
-
易于程序的扩展与维护
-
-
接口的实现(可以多实现):
class
子类
extends 父类
implements
父接口
1,
父接口
2...{
}
-
接口的继承(因为接口不存在接口的实现,所以可以多继承)
interface C extends A,B{
}
-
接口无构造方法、在加载时也米有接口本身的实例(无本身对象的创建)