继承、抽象类、final关键字


继承

子类继承父类,就可以具有父类的属性和方法,还可以在子类中定义自己特有的属性和方法。

优点:提高复用性、扩展性、维护性

语法:

public class Person{
    
}

public class Student extends Person{
    public Student(){//子类无参构造
        //super();   子类默认调用父类的无参构造
    }
}
public class Teacher extends Person{
    
}

特点:子类继承父类,拥有父类所有非私有成员,不能继承父类构造方法但是子类初始化的时候(不管是通过有参构造还是无参构造),如果继承有父类,都会先去调用父类的无参构造。

java只支持单继承,不支持多继承,但是java中类支持多层继承

构造方法、private、不在同包不能继承

super关键字

super写在子类中,代表父类,用于区分子类与父类的成员。

1.super():父类的构造方法,给父类成员变量赋值

2.super.成员名 调用父类非私有成员

this关键字

this写在本类中,代表本类,用于区分成员变量与局部变量,例如setter方法中 this.age = age;

1.this() :调用本类的构造方法

2.this.成员名 调用本类的成员

小节:this与super都有一个特点(区分变量)两个调用(调用成员与构造方法)

访问修饰符

子类重写父类方法

语法:

1、方法签名(返回类型,方法名,参数列表)与父类方法签名完全一致。

2、访问权限不得低于父类权限

@Override 注解检验方法重写是否成功

抽象类

强制子类必须重写抽象类里的所有抽象方法,它是一个约定,也是一个规范

特点

1.抽象类不能实例化 不能new

2.能像普通类一样定义成员变量、成员方法、构造方法(虽然不能实例化,但是可供子类用super( )调用)多一个能定义抽象方法

抽象方法:

特点:

1.使用abstract修饰,没有方法体

2.在抽象类内定义

3.子类必须重写,除非子类也只抽象类

public abstract class Worker{
    public abstract void work();
}

public class Teacher extends Worker {
    @Override
    public void work(){
        
    }
}

final关键字

使用场景

1.类不想被继承

2.方法不想被重写

3.变量不想被修改

public final class Student(){}
 public final void Work(){}
final int a = 0; 

相关