java.类的继承
概述
继承是多态的前提,如果没有继承就没有多态
继承主要解决的问题就是:共性抽取
特点
1、子类可以拥有父类的内容
2、子类可以拥有自己专有的内容
定义格式
定义父类的格式:(普通类的定义)
public class 父类名称{
//......
}
定义子类的格式:
public class 子类名称 extends 父类名称{
//......
}
代码演示
1、创建一个父类
public class ParentClass {
public void method(){
System.out.println("我是父类");
}
}
2、创建一个子类继承父类
public class SubClass extends ParentClass {
}
3、在主方法中调用子类继承父类的方法
public class InheritTest {
public static void main(String[] args) {
SubClass tt = new SubClass();
tt.method();
}
}
** 4、输出结果**
我是父类
如何区分子类方法中重名
如果局部变量、本类的成员变量和父类的成员变量重名那么该如何分开调用呢?
this关键字
每个对象都有一个名为this的引用,它指向当前对象本身,调用本类中的属性,也就是类中的成员变量
super关键字
与this相似,super可调用父类的成员变量、成员方法、构造方法
方法覆盖(重写 overrode)
**方法覆盖的注意事项 **
1、必须保证父子类之间方法的名称相同,参数列表也相同
2、@override:写在方法前,可以用来检测是否有效正确复写。非必须项但建议写上
3、子类方法的返回值必须【小于等于】父类的返回值范围
例:java.lang.Object类是所有类的最高父类,java.lang.String是Object的子类
你定义父类的返回值类型可以是Object,子类可以是Object或String都行。但是反过来就不行。
4、子类方法的权限必须【大于等于】父类方法的权限修饰符
扩展:public > protected > default(不写) > private
方法覆盖使用的场景
super
super关键字的用法有三种
1、在子类的成员方法中访问父类的成员变量
2、在子类的成员方法中访问父类的成员方法
3、在子类的构造方法中访问父类的构造方法
this
1、在本类的成员方法中访问本类的成员变量
2、在本类的成员方法中访问本类的另一个成员方法
3、在本类的构造方法中访问本类的另一个构造方法
在无参构造方法中调用有参构造方法
注意:在无参构造方法内调用的有参构造方法必须是第一个语句,也是唯一一个