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、在本类的构造方法中访问本类的另一个构造方法
    在无参构造方法中调用有参构造方法
    注意:在无参构造方法内调用的有参构造方法必须是第一个语句,也是唯一一个
原文地址:https://www.cnblogs.com/youngleesin/p/11689234.html