继承:extends
子类(衍生类、扩展类)、父类(基类、超类)
作用:提高代码复用性,是多态的前提
-
子类继承父类,就可以直接访问父类所有的非私有成员变量和方法
-
一个类只有一个父类(单继承),父类可以有多个子类
-
子类可以定义属于自己的成员变量和成员方法
-
创建子类对象之前会先创建父类对象,子类加载前会先加载父类
-
在内存中,子类对象中会有一个空间存放父类对象
-
想要调用父类的成员变量和成员方法可以使用super关键词,super.属性、super.方法、super() 父类无参构造方法,super()要放在方法的第一行。
-
子类的构造方法中会默认的调用super()
this关键词与super关键词的区别:
- this关键词是调用当前对象的成员变量、成员方法时使用。super关键词是调用父类对象的成员变量、成员方法时使用
Object是所有类的父类,注意接口不是类因此不继承Object
特殊情况(尽量避免):
- 子类中定义了与父类成员变量名相同的成员变量,赋值是会赋值给子类中的成员变量
方法重写
- 前提:必须存在父子类关系
- 子类重写父类方法,方法名、方法返回值、方法参数必须完全一致,访问权限必须大于父类的访问权限
- 可以使用super关键字调用父类的方法
- 如果重写了父类方法,在调用时会重写后的方法,否则调用父类方法
方法重写与方法重载的区别:
- 方法重写是指在有继承关系的类之间,子类中有与父类方法名、方法参数、方法返回类型相同,访问权限大于父类的方法。而方法重载是指在同一个类中方法名相同、方法参数顺序、数量、类型不同的方法