JAVA面对对象(三)——Super、static、final关键字
Super
使用super关键字可以直接调用父类中的构造方法、属性、普通方法
super调用父类构造方法的操作,与this调用构造方法一样,语句必须放在子类构造方法的首行
public class Person { //定义父类Person private String name; //定义name属性 private int age; //定义age属性 public Person(String name,int age) { //通过构造方法设置name、age this.setName(name); //设置name属性内容 this.setAge(age); //设置age属性内容 } public String getName() { //取得name属性 return name; } public void setName(String name) { //设置name属性 this.name = name; } public int getAge() { //取得age值 return age; } public void setAge(int age) { //设置age值 this.age = age; } public String getInfo(){ //信息输出 return "姓名:"+this.getName()+"; 年龄:"+this.getAge(); } } public class Student extends Person{ private String school; //定义新属性school public Student(String name, int age, String school) { super(name, age); //调用父类中的构造方法 this.school = school; } public String getSchool() { //取得school属性 return school; } public void setSchool(String school) { //设置school属性 this.school = school; } @Override public String getInfo() { //覆写父类中的方法 return super.getInfo()+" ;学校:"+this.getSchool(); //扩充父类方法 } } public class Demo { public static void main(String[] args) { Student stu = new Student("李四", 25, "北京大学"); System.out.println(stu.getInfo()); //调用覆写过得方法打印输出 } }
运行结果:
姓名:李四; 年龄:25 ;学校:北京大学
从上面的程序中可以看出子类中使用super()方法调用了父类中含有两个参数的构造方法,然后再覆写了父类中的getInfo()方法,最后输出内容是被子类覆写过的内容;
super和this十分类似,都可以调用构造方法、属性、普通方法。但是也有区别:
序号 | 区别点 | this | super |
1 | 属性访问 | 访问本类中的属性,如果本类中没有则从父类中查找 | 访问父类中的属性 |
2 | 方法 | 访问本类中的方法,如果本类中没有则从父类中查找 | 直接访问父类中的方法 |
3 | 调用构造 | 调用本类构造,必须放在构造方法首行 | 调用父类构造,必须放在子类构造方法首行 |
4 | 特殊 | 表示当前对象 | 无概念 |
既然都可以调用构造方法,那么this和super不可以同时出现,因为都要放在构造方法首行。另外,无论子类如何操作,最终先调用父类中的构造方法
static
static表示“全局”或者“静态”的意思,用来修饰成员变量或成员方法;被static修饰的成员变量和成员方法独立于该类的任何对象,也就说他不依赖于任何实例的对象,当该类被创建时它们也被创建;因此static对象可以在他的任何对象创建之前访问,无需引用任何对象
static修饰的成员变量或成员方法习惯上称作静态变量或静态方法可以直接通过类名来访问,访问语法为:
类名.静态方法名(参数列表)
类名.静态变量名
final
final表示的意思是最终,可以使用final关键字声明类、属性、方法
- 使用final声明的类不能有子类
- 使用final声明的方法不能被子类覆写
- 使用final声明的变量即成为常量,常量不可修改
使用final声明变量时,要求全部字母大写
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】博客园2025新款「AI繁忙」系列T恤上架,前往周边小店选购
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 通过一个DEMO理解MCP(模型上下文协议)的生命周期
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
· 记一次 .NET某固高运动卡测试 卡慢分析
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· AI浏览器自动化实战
· Chat to MySQL 最佳实践:MCP Server 服务调用
· 解锁.NET 9性能优化黑科技:从内存管理到Web性能的最全指南
· .NET周刊【3月第5期 2025-03-30】
· 重生之我是操作系统(八)----文件管理(上)