導航:首頁 > 安裝方法 > 構造類裡面的super方法指向哪裡

構造類裡面的super方法指向哪裡

發布時間:2022-06-23 18:34:45

1. java構造方法里的super和this問題

一、this
Java關鍵字this只能用於方法方法體內。當一個對象創建後,Java虛擬機(JVM)就會給這個對象分配一個引用自身的指針,這個指針的名字就是this。因此,this只能在類中的非靜態方法中使用,靜態方法和靜態的代碼塊中絕對不能出現this,這在「Java關鍵字static、final使用總結」一文中給出了明確解釋。並且this只和特定的對象關聯,而不和類關聯,同一個類的不同對象有不同的this。下面給出一個使用this的綜合實例,以便說明問題:

package org.leimin;
public class Test6 {
private int number;
private String username;
private String password;
private int x = 100;
public Test6(int n) {
number = n; // 這個還可以寫為: this.number=n;
}
public Test6(int i, String username, String password) {
// 成員變數和參數同名,成員變數被屏蔽,用"this.成員變數"的方式訪問成員變數.
this.username = username;
this.password = password;
}
// 默認不帶參數的構造方法
public Test6() {
this(0, "未知", "空"); // 通過this調用另一個構造方法
}
public Test6(String name) {
this(1, name, "空"); // 通過this調用另一個構造方法
}
public static void main(String args[]) {
Test6 t1 = new Test6();
Test6 t2 = new Test6("遊客");
t1.outinfo(t1);
t2.outinfo(t2);
}
private void outinfo(Test6 t) {
System.out.println("-----------");
System.out.println(t.number);
System.out.println(t.username);
System.out.println(t.password);
f(); // 這個可以寫為: this.f();
}
private void f() {
// 局部變數與成員變數同名,成員變數被屏蔽,用"this.成員變數"的方式訪問成員變數.
int x;
x = this.x++;
System.out.println(x);
System.out.println(this.x);
}

//返回當前實例的引用
private Test6 getSelf() {
return this;
}
}

運行結果如下:

-----------
0
未知

100
101
-----------
0
遊客

100
101

看著上面的例子,說明在什麼情況下需要用到this:
第一、通過this調用另一個構造方法,用發是this(參數列表),這個僅僅在類的構造方法中,別的地方不能這么用。
第二、函數參數或者函數中的局部變數和成員變數同名的情況下,成員變數被屏蔽,此時要訪問成員變數則需要用「this.成員變數名」的方式來引用成員變數。當然,在沒有同名的情況下,可以直接用成員變數的名字,而不用this,用了也不為錯,呵呵。
第三、在函數中,需要引用該函所屬類的當前對象時候,直接用this。
其實這些用法總結都是從對「this是指向對象本身的一個指針」這句話的更深入的理解而來的,死記不然容易忘記而且容易搞錯,要理解!

二、super

super關鍵和this作用類似,是被屏蔽的成員變數或者成員方法或變為可見,或者說用來引用被屏蔽的成員變數和成員成員方法。
不過super是用在子類中,目的是訪問直接父類中被屏蔽的成員,注意是直接父類(就是類之上最近的超類)。下面是一個綜合運用super的例子,有兩個類:一個Father類,一個Father類的子類Son,通過這兩個類完全演示了super的用法,一下是代碼:

package org.leimin;
public class Father {
public String v="Father";
public String x="輸出了Father類的public成員變數x!!!";

public Father() {
System.out.println("Father構造方法被調用!");
}

public Father(String v){
this.v="Father類的帶參數構造方法!運行了.";
}
public void outinfo(){
System.out.println("Father的outinfo方法被調用");
}
public static void main(String[] args) {
// TODO 自動生成方法存根
}
}

package org.leimin;
public class Son extends Father{
public String v="Son";

public Son() {
super(); //調用超類的構造方法,只能放到第一行.
System.out.println("Son無參數構造方法被調用!");
//super(); //錯誤的,必須放到構造方法體的最前面.
}

public Son(String str){
super(str);
System.out.println("Son帶參數構造方法被調用!");
}
//覆蓋了超類成員方法outinfo()
public void outinfo(){
System.out.println("Son的outinfo()方法被調用");
}

public void test(){

String v="哈哈哈哈!"; //局部變數v覆蓋了成員變數v和超類變數v

System.out.println("------1-----");
System.out.println(v); //輸出局部變數v
System.out.println(this.v); //輸出(子類)成員變數v
System.out.println(super.v); //輸出超類成員變數v

System.out.println("------2-----");
System.out.println(x); //輸出超類成員變數v,子類繼承而來
System.out.println(super.x); //輸出超類成員變數v

System.out.println("------3-----");
outinfo(); //調用子類的outinfo()方法
this.outinfo(); //調用子類的outinfo()方法
super.outinfo(); //調用父類的outinfo()方法
}

public static void main(String[] args) {
new Son().test();

}
}

2. JAVA中super的作用

super可作用是向自己超(父)類對象的一個指針,而這個超類指的是離自己最近的一個父類。

super也有三種用法:

1、普通的直接引用

與this類似,super相當於是指向當前對象的父類,這樣就可以用super.xxx來引用父類的成員。

2、子類中的成員變數或方法與父類中的成員變數或方法同名。

3、引用構造函數

super(參數):調用父類中的某一個構造函數(應該為構造函數中的第一條語句)。

this(參數):調用本類中另一種形式的構造函數(應該為構造函數中的第一條語句)。

(2)構造類裡面的super方法指向哪裡擴展閱讀

super使用

示例:

class Country {

String name;

void value() {

name = "China";

}

}

class City extends Country {

String name;

void value() {

name = "Shanghai";

super.value(); //調用父類的方法

System.out.println(name);

System.out.println(super.name);

}

public static void main(String[] args) {

City c=new City();

c.value();

}

}

3. 分別闡述關鍵字super和this在java語言中的用法分別說明重載和重寫的要求是什麼

this表示自己本身,super表示父類。對象沒有寫extends時,表示Object。默認都繼承Object的。繼承某個類時。則表式所繼承的類。
this是用來調用本類方法或屬性的。
super是用來調用父類的方法及屬性的。
1.重寫必須繼承,重載不用。
2.重寫的方法名,參數數目相同,參數類型兼容,返回值相同,重載的方法名相同,參數列表不同,返回值也可以不同。
3.重寫的方法修飾符大於等於父類的方法,重載和修飾符無關。
4.重寫不可以拋出父類沒有拋出的一般異常,可以拋出運行時異常

4. java中super是在哪個類裡面

子類的構造函數如果要引用super的話,必須把super放在函數的首位.
class Base {
Base() {
System.out.println("Base");
}
}

public class Checket extends Base {
Checket() {
super();//調用父類的構造方法,一定要放在方法的首個語句
System.out.println("Checket");
}

public static void main(String argv[]) {
Checket c = new Checket();
}
}

如果想用super繼承父類構造的方法,但是沒有放在第一行的話,那麼在super之前的語句,肯定是為了滿足自己想要完成某些行為的語句,但是又用了super繼承父類的構造方法。那麼以前所做的修改就都回到以前了,就是說又成了父類的構造方法了。

5. Java裡面super關鍵字是在子類對象內部指代其父類對象的引用嗎

是的。
1、super調用基類中的某一個構造函數
2、super引用當前對象的直接父類中的成員(用來訪問直接父類中被隱藏的父類中成員數據或函數,基類與派生類中有相同成員定義時如:super.變數名 super.成員函數據名(實參)

6. 為什麼這里在構造方法裡面要寫super呢它繼承的是自類的父類

我來解釋:
如果你想用super繼承父類構造的方法
但是沒有放在第一行的話
那麼在super之前的語句
肯定是為了滿足你自己想要完成某些行為的語句
但是你又用了super繼承父類的構造方法
那麼以前所做的修改就都回到以前了
...

閱讀全文

與構造類裡面的super方法指向哪裡相關的資料

熱點內容
社會保障成本的基本方法有哪些 瀏覽:623
帆布袋的編織方法視頻 瀏覽:792
蘋果手機免稅的方法 瀏覽:457
簡單電動汽車製作方法 瀏覽:706
項目用了哪些創新思維方法 瀏覽:561
如何學編輯視頻的方法 瀏覽:875
雙層鋁的安裝方法 瀏覽:89
圓柱魚缸水量計算方法 瀏覽:402
金魚腸炎治療方法 瀏覽:970
怎麼用最簡單的方法畫兔子 瀏覽:612
構造類裡面的super方法指向哪裡 瀏覽:183
亞克力起霧解決方法 瀏覽:68
玉好壞怎麼鑒別方法圖片 瀏覽:54
畫漫畫眼睛的簡便方法 瀏覽:548
中國教學方法的專家 瀏覽:152
靈芝食用方法及功效 瀏覽:866
如何治療腸息肉的最好方法 瀏覽:414
最簡單模仿女聲方法 瀏覽:122
ugnx85安裝方法圖文步驟 瀏覽:56
有沒有讓時間快速流逝的方法 瀏覽:805