继承、抽象类、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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!