繼承中this關鍵字和super關鍵字的作用
阿新 • • 發佈:2019-02-02
package org.westos_01_繼承;
/*
* 問題:
* 不僅要在控制檯輸出子類中的區域性變數的值,還要輸出子類的成員位置的變數的值,怎麼辦?
*
* 現在要訪問子類的成員變數num =20 ;
* 誰能代表Zi2類,this關鍵字:代表的是當前類物件
* 問題:要輸出父類中的成員變數的值:
* super:代表的是父類的儲存的空間標識(代表的是父類的物件或者是父類的引用)
* 應用場景:
* 訪問成員變數:
* this.成員變數;訪問的是本類的成員變數
* super.成員變數:訪問的父類的成員變數
* 訪問成員方法:
* this.成員方法(); 訪問的是本類的成員方法
* super.成員方法();訪問拿到父類的成員方法
* 訪問構造方法:
* this():訪問的是本類中的空參構造;this("..."):訪問拿到是本類中的帶參構造
* super():訪問拿到是父類中無參構造
* super(".."):訪問的是父類中的帶參構造
* */
class Fu2{
public int num = 10;
}
class Zi2 extends Fu2{
public int num = 20 ;
public void show(){
int num = 30 ;
System.out.println(num);//30
System.out.println(this.num);//20
System.out.println(super.num);//10
}
}
//測試類
public class ExtendsDemo5 {
public static void main(String[] args) {
//建立子類物件
Zi2 z = new Zi2() ;
z.show() ;
}
/*
* 問題:
* 不僅要在控制檯輸出子類中的區域性變數的值,還要輸出子類的成員位置的變數的值,怎麼辦?
*
* 現在要訪問子類的成員變數num =20 ;
* 誰能代表Zi2類,this關鍵字:代表的是當前類物件
* 問題:要輸出父類中的成員變數的值:
* super:代表的是父類的儲存的空間標識(代表的是父類的物件或者是父類的引用)
* 應用場景:
* 訪問成員變數:
* this.成員變數;訪問的是本類的成員變數
* super.成員變數:訪問的父類的成員變數
* 訪問成員方法:
* this.成員方法(); 訪問的是本類的成員方法
* super.成員方法();訪問拿到父類的成員方法
* 訪問構造方法:
* this():訪問的是本類中的空參構造;this("..."):訪問拿到是本類中的帶參構造
* super():訪問拿到是父類中無參構造
* super(".."):訪問的是父類中的帶參構造
* */
class Fu2{
public int num = 10;
}
class Zi2 extends Fu2{
public int num = 20 ;
public void show(){
int num = 30 ;
System.out.println(num);//30
System.out.println(this.num);//20
System.out.println(super.num);//10
}
}
//測試類
public class ExtendsDemo5 {
public static void main(String[] args) {
//建立子類物件
Zi2 z = new Zi2() ;
z.show() ;
}
}
package org.westos_01_繼承;
/*
* 繼承中構造訪問的訪問特點:
* 1)子類中的構造方法預設訪問的是父類的無參構造方法
* 2)子類的構造方法預設的第一句話:super();
*
* 為什麼子類中的構造方法預設訪問父類中的無參構造方法
* 子類繼承父類的時候,可能會使用父類的資料,所以在繼承的時候,想讓父類進行初始化,父類初始化完畢之後,子類才進行自己的初始化!
* 子類的無參和有參第一句話有一個預設語句:super() ;
*
* */
class Father3{
public Father3(){
System.out.println("這是父類的無參構造方法...");
}
public Father3(String name){
System.out.println("這是父類的帶參構造方法...");
}
}
//子類
class Son3 extends Father3{
public Son3(){
///super() ;
System.out.println("這是子類的無參構造方法...");
}
public Son3(String name){
//super() ;
System.out.println("這是子類的有參構造方法...");
}
}
//測試類
public class ExtendsDemo6 {
public static void main(String[] args) {
//建立物件
Son3 s = new Son3() ;
System.out.println("-------------------");
Son3 s2 = new Son3("高圓圓") ;
}
}