Java super关键字使用 +案列
1 package com.bytezero.supertest; 2 /* 3 * 4 * super关键字使用 5 * 1.super:理解为 父类的 6 * 2.super可以使用调用:属性,方法,构造器 7 * 8 * 3.super的使用:调用属性,方法, 9 * 10 * 可以在子类的方法或构造器中。通过使用“super.属性的” 或“super.方法”的方式, 11 * 显示的调用父类声明的属性或方法。但是,通常情况下,习惯省略“super.” 12 * 13 * 特殊情况: 当子类与父类定义了同名的属性时:我们想要在子类中调用父类中声明的属性,则必须 14 * 显示的使用:super.属性 的方式,表明调用的是父类中声明的属性 15 * 16 * 特殊情况:当子类重写了父类的方法以后,我们想在子类的方法中调用了父类中被重写的方法时, 17 * 则必须显示的使用:super.方法 的方式,表明调用的是父类中被重写的方法 18 * 19 * 4.super调用构造器 调用父类的 构造器 20 * 1.在子类的构造器中显示的使用"super(形参列表)"的方式,调用父类中声明指定的构造器 21 * 2."super(形参列表)"的方式的使用,必须声明在子类构造器的首行!! 22 * 3.我们在类的构造器中,针对于”this(形参列表)“或”super(形参列表)“,只能二选一,不能 23 * 同时出现。 24 * 4.在构造器的首行,没有先显示的声明,”this(形参列表)“或”super(形参列表)“,则默认调用 25 * 的是父类中空参的构造器:super(); 26 * 5.在类的多个构造器中,至少有一个类的构造器中,使用了”super(形参列表)“,调用父类中的构造器 27 * 28 * 29 * 30 */ 31 public class SuperTest 32 { 33 public static void main(String[] args) { 34 35 Student s = new Student(); 36 s.show(); 37 38 39 System.out.println(); 40 s.study(); 41 42 Student s1 = new Student("Tom",21,"IT"); 43 s1.show(); 44 45 System.out.println("*******************"); 46 Student s2 = new Student(); 47 48 49 50 51 } 52 }
1 package com.bytezero.supertest; 2 3 public class Person 4 { 5 String name; 6 int age; 7 int id = 1001; //身份证好 8 9 public Person() 10 { 11 System.out.println("我无处不在"); 12 } 13 public Person(String name) 14 { 15 this.name = name; 16 } 17 18 public Person(String name,int age) 19 { 20 this(name); 21 this.age = age; 22 23 } 24 public void eat() 25 { 26 System.out.println("人,吃饭"); 27 } 28 public void walk() 29 { 30 System.out.println("人,走路"); 31 } 32 33 34 35 36 }
1 package com.bytezero.supertest; 2 3 public class Student extends Person { 4 5 String major; 6 int id = 1002; //学号 7 8 public Student() 9 { 10 super(); 11 } 12 13 public Student(String major) 14 { 15 16 this.major = major; 17 } 18 public Student(String name,int age,String major) 19 { 20 // this.name = name; 21 // this.age = age; 22 super(name,age); 23 this.major = major; 24 } 25 26 @Override 27 public void eat() 28 { 29 System.out.println("学生多吃有营养的食物"); 30 } 31 32 public void study() 33 { 34 System.out.println("学生:学习知识!"); 35 this.eat(); 36 super.eat(); 37 //this.walk(); //都可以使用 通常 省略 38 //super.walk(); 39 walk(); 40 } 41 42 43 public void show() 44 { 45 System.out.println("name=" + this.name +",age="+super.age); 46 47 System.out.println("id= " + this.id); 48 System.out.println("id= "+super.id); 49 } 50 51 }
本文来自博客园,作者:Bytezero!,转载请注明原文链接:https://www.cnblogs.com/Bytezero/p/15312177.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)