java中的关键字:this与super 大详解
生活随笔
收集整理的這篇文章主要介紹了
java中的关键字:this与super 大详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1.this
- 1.1. this是什么?
- 1.2 this調用對象中的屬性、構造器和方法
- 2.super
- 2.1 super是什么?
- 2.2 super調用父類的屬性、構造器、方法
- 3. this與super 比較
本篇文章已同步到:https://www.bithachi.cn/posts/720ba9d4.html
1.this
1.1. this是什么?
- this是Java中的關鍵字,它的作用和其詞義很接近,這個。
它在方法內部使用,即這個方法所屬對象的引用;
它在構造器內部使用,表示該構造器正在初始化的對象。 - this 可以調用類的屬 性、方法和構造器
- 什么時候使用this關鍵字呢?
當在方法內需要用到調用該方法的對象時,就用this。
具體的:我們可以用this來區分屬性和局部變量。
比如:this.name = name;
1.2 this調用對象中的屬性、構造器和方法
規則:
運行結果:
新對象實例化 對象的姓名:王五 局部變量年齡: 20 對象的年齡:182.super
2.1 super是什么?
-
super是Java的關鍵字
-
在Java類中使用super來調用父類中的指定操作:
-
super可用于訪問父類中定義的屬性,protected,public,default
-
super可用于調用父類中定義的成員方法
-
super可用于在子類構造器中調用父類的構造器
-
當父類中沒有空參數的構造器時,子類的構造器必須通過this(參數列表或者super( 參數列表)語句指定調用本類或者父類中相應的構造器。同時,只能”二選一”,且必須放在構造器的首行
-
子類中所有的構造器默認都會訪問父類中 空參數的構造器
-
如果子類構造器中既未顯式調用父類或本類的構造器,且父類中又沒有無參的構造器,則編譯出錯
-
注意:
2.2 super調用父類的屬性、構造器、方法
/*** @Program: JavaSE* @ClassName: Person* @Author: Mr.BitHachi* @CreateTime: 2020-07-30 18:07* @Version: V1.0* @Description:**/ public class Person {private String name;private int age;private Date birthDate;public String isPublic="isPublic";protected String isProtected="isProtected";private String isPrivate="isProtected";String isDefault="isDefault";public String getInfopublic() {return "getInfopublic:Name: " + name + " age: " + age;}private String getInfoPrivate() {return "getInfoPrivate:Name: " + name + " age: " + age;}protected String getInfoProtected() {return "getInfoProtected:Name: " + name + " age: " + age;}String getInfoDefault() {return "getInfoDefault:Name: " + name + " age: " + age;}public Person(String name, int age, Date d) {this.name = name;this.age = age;this.birthDate = d;}public Person(String name, int age) {this(name, age, null);}public Person(String name, Date d) {this(name, 22, d);}public Person(String name) {this(name, 22);} } /*** @Program: JavaSE* @ClassName: Studnet* @Author: Mr.BitHachi* @CreateTime: 2020-07-30 20:25* @Version: V1.0* @Description:**/public class Student extends Person {private String school;public Student(String name, int age, String s) {super(name, age);school = s;}public Student(String name, String s) {super(name);//調用父類的構造器school = s;}//this和super測試調用父類的屬性和方法,不能調用父類的private修飾的屬性和方法public void display(){System.out.println(this.isDefault);System.out.println(this.isProtected);System.out.println(this.isPublic);System.out.println("----------------");System.out.println(super.isDefault);System.out.println(super.isProtected);System.out.println(super.isPublic);System.out.println("----------------");System.out.println(this.getInfoDefault());System.out.println(this.getInfoProtected());System.out.println(this.getInfopublic());System.out.println("----------------");System.out.println(super.getInfoDefault());System.out.println(super.getInfoProtected());System.out.println(super.getInfopublic());}// 編譯出錯: 沒有 super(),系統將調用父類無參數的構造器。// Person沒有無參數的構造器 // public Student(String s) { // school = s; // }public static void main(String[] args) {Student s=new Student("BitHachi","加里敦大學");s.display();} }運行結果:
isDefault isProtected isPublic ---------------- isDefault isProtected isPublic ---------------- getInfoDefault:Name: BitHachi age: 22 getInfoProtected:Name: BitHachi age: 22 getInfopublic:Name: BitHachi age: 22 ---------------- getInfoDefault:Name: BitHachi age: 22 getInfoProtected:Name: BitHachi age: 22 getInfopublic:Name: BitHachi age: 223. this與super 比較
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的java中的关键字:this与super 大详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一文带你了解java面向对象的三大特性:
- 下一篇: 一篇文章全方位了解:static ma