靜態方法中問什麼不能使用this、super關鍵字。
- 感性方面
首先區分類和物件,物件是類的一個例項。也就是物件會有多個而類只有一個。
- 靜態方法是類中擁有的。
- this代表當前物件。
- super代表當前物件的父類物件。
可以看出來靜態方法只有一個,而this、super是多個。
- 理性方面
記憶體載入順序是不同的,記憶體先載入類再此同時會將靜態方法載入。而此時物件沒有產生,所有會有空指標。
public class A { private String a; public A() { System.out.println("建立物件"); } public String getA() { return a; } public void setA(String a) { this.a = a; } public void print() { System.out.println("列印方法執行"); } }
public class ServerController extends A{ public static void main(String[] args) { A a = new A(); a.print(); } public static void p() { super.print(); } }
如上述程式碼,載入ServerController類時main、p方法被載入。而A的類已經被載入了,但是A的物件沒有被建立。所以super.print();會報錯。
相關推薦
靜態方法中問什麼不能使用this、super關鍵字。
感性方面 首先區分類和物件,物件是類的一個例項。也就是物件會有多個而類只有一個。靜態方法是類中擁有的。this代表當前物件。super代表當前物件的父類物件。可以看出來靜態方法只有一個,而this、super是多個。理性方面記憶體載入順序是不同的,記憶體先載入類再此同時會將
Java static修飾的方法中不能使用this、super關鍵字
首先,Java中可以使用static宣告屬性或方法,如果現在希望一個屬性被所有物件所共同擁有,則可以將其宣告為static型別。宣告static型別的屬性或方法之後此屬性或方法也稱為類方法,可
Java-this、super關鍵字(認真分析)
習慣 類成員 發生 nbsp spa author ++ jvm 類繼承 一、this關鍵字 this關鍵字只能用於方法體內,當創建一個對象時候,JVM就會為這個對象分配一個資深的指針,就是this。因此this只能在非靜態方法中使用,靜態方法和靜態的代碼塊中絕對不能使
細節3:static、final、this、super關鍵字
teacher 副本 super 構造 基本數據 靜態 dom 輸出結果 new 1、static static關鍵字修飾的變量或者函數是屬於整個類的,調用方式,類名.變量/方法 靜態函數中,只能調用靜態的變量或者函數 靜態的變量只會運行一次 public
final、static、this、super 關鍵字總結
final 關鍵字 final關鍵字主要用在三個地方:變數、方法、類。 對於一個final變數,如果是基本資料型別的變數,則其數值一旦在初始化之後便不能更改;如果是引用型別的變數,則在對其初始化之後
為什麼靜態成員、靜態方法(static)中不能用this和super關鍵字
因為this代表的是呼叫這個函式的物件的引用,而靜態方法是屬於類的,不屬於物件,靜態方法成功載入後,物件還不一定存在 在問題之前先講super的用法:1.super的用法跟this類似,this代表對本類物件的引用,指向本類已經建立的物件;而super代表對父類物件的引用,指
java中靜態方法中為什麼不能使用this、super和直接呼叫非靜態方法
這個要從java的記憶體機制去分析,首先當你New 一個物件的時候,並不是先在堆中為物件開闢記憶體空間,而是先將類中的靜態方法(帶有static修飾的靜態函式)的程式碼載入到一個叫做方法區的地方,然後再在堆記憶體中建立物件。所以說靜態方法會隨著類的載入而被載入。當你new一個物件時,該物件存在於對
java中的構造方法,this、super的用法
重寫 需要 註意事項 進行 private class print 沒有 系統 1、構造方法 定義:與類同名沒有返回值的方法稱為構造方法; public class test1 {private String name;private int age;public test
Java中的繼承、方法覆蓋(方法重寫)、super關鍵字
Java繼承 繼承 繼承是面向物件的一個重要的特性,它體現了類與類之間的一些邏輯關係,目的是為了程式碼複用(以減少開發成本)。當多個類之間有一些共同的屬性(成員變數)和功能(成員方法)時,我們可以將他們共同的部分拿出來作為一個父類定義實現這些共性,這些類中可以不再定義這
靜態方法為什麼不能使用this和super關鍵字
首先要理解this和super是什麼? this是對當前物件的引用,super是指父類物件的引用。 其次靜態成員優先於物件載入到記憶體中,它是隨著類的載入而載入的。 如果靜態方法中有this和super那麼當靜態方法被載入到記憶體中,其中的this和super也被載入到記憶
java面試題2--方法重寫與過載、this和super關鍵字
1:方法重寫和方法過載的區別?方法過載能改變返回值型別嗎? 方法重寫: 在子類中,出現和父類中一模一樣的方法宣告的現象。 方法過載: 同一個類中,出現的方法名相同
Java中super關鍵字、super關鍵字與this關鍵字的區別
1 super關鍵字 1.1 super用於方法 1.1.1 用於構造方法 當子類呼叫父類無參構造時,super可寫可不寫,表示呼叫父類的無參構造! 當子類呼叫父類有參構造時,super(引數列表)必須要寫,要告訴編輯器呼叫的是哪個有參構造!
java中this 和 super關鍵字的作用
etag 傳遞 記錄 ont this spa 根據 普通 void emmmmmm也真的是好久沒有寫過java了,因為項目需要, 最近又必須重新拾起來了,雖然好多東西也都忘得差不多了.... 然後發現 竟然把super和this傻傻分不清.... 開個帖子記錄一下: 一、
12_Java面向對象_第12天(構造方法、this、super)_講義
ride 學習 代碼執行 客戶端軟件 抽象 getname 程序 修飾 所有 今日內容介紹 1、構造方法 2、this關鍵字 3、super關鍵字 4、綜合案例 01構造方法引入 A:構造方法的引入 在開發中經常需要在創建對象的同時明確對象的屬性值, 比如員工
java的關鍵字 this、super、final、static、
使用 實參 原來 創建過程 列表 clas 必須 attribute ceshi 1、this關鍵字(1)成員變量和局部變量同名 可以在成員變量名前面加上this.來區別成員變量和局部變量 package com.oracle.demo03; public class
靜態方法中只允許訪問靜態數據,那麽,如何在靜態方法中訪問類的實例成員(即沒有附加static關鍵字的字段或方法)?
static關鍵字 實例成員 clas 靜態 image eth sys 靜態方法 http package test.two; public class jingtaihanshu { int x = 3; static int y
4.Java_關鍵字this、super、static、final(終結器)與基本資料型別轉換
一、關鍵字this 1.表示呼叫本類屬性:在類中訪問類的屬性,一定要加上this關鍵字。 2.表示呼叫本類方法: (1)呼叫普通方法:this.方法名(引數); 當有類的繼承關係時,表示本類方法一定要加上th
Java中this、static關鍵字的記憶體圖解
Java中的關鍵字有很多,abstract default goto* null switch boolean do if package nchronzed break&nb
Java中this、static關鍵字的內存圖解
數據區 prot 屬性 volatile stat strong 發展 char ons Java中的關鍵字有很多,abstract default goto* null switch boolean do if package nchronzed
Java中this,super關鍵字
一.this Java關鍵字this只能用於方法方法體內。當一個物件建立後,Java虛擬機器(JVM)就會給這個物件分配一個引用自身的指標,這個指標的名字就是this。因此,this只能在類中的非靜態方法中使用,靜態方法和靜態的程式碼塊中絕對不能出現this,這在“Java關鍵字s