您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關JavaSE static final及abstract修飾符實例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
static :靜態常量,靜態方法,靜態代碼塊
靜態變量: 靜態變量屬于類的,使用類名來訪問,非靜態變量是屬于對象的,"必須"使用對象來訪問.
注意:靜態變量對于類而言在內存中只有一個,能被類中所有的實例共享。 實例變量對于類的每一個實例都有一份,
它們之間互不影在加載類的過程中為靜態變量分配內存,實例變量在創建對象時分配內存
所以靜態變量可以使用類名來直接訪問,而不需要使用對象來訪問.
package com.len.collection;public class PersonTest111 { private static String username="戰士高高"; private String password; public static String getUsername() { return username; } public static void setUsername(String username) { PersonTest111.username = username; } public String getPasswoord() { return passwoord; } public void setPasswoord(String passwoord) { this.passwoord = passwoord; } public static void main(String[] args) { /** * 第一點: 靜態變量屬于類的,可以使用名來訪問,非靜態變量是屬于對象的,必須使用對象來訪問。 */ System.out.println(PersonTest111.username); PersonTest111 personTest111 = new PersonTest111(); personTest111.setPasswoord("2131231"); System.out.println(personTest111.getPasswoord()); }}
靜態方法:靜態方法數屬于類的,"可以"使用類名來調用,非靜態方法是屬于對象的,"必須"使用對象來調用.
靜態方法"不可以"直接訪問類中的非靜態變量和非靜態方法,但是"可以"直接訪問類中的靜態變量和靜態方法
注意:this和super在類中屬于非靜態的變量.(靜態方法中不能使用),代碼同上
靜態代碼塊:在類加載的時候被調用,給靜態成員變量賦值
<em>package com.len.collection; public class PersonTest extends PersonTest111{ private static String username="張珊"; private String password="123456"; public PersonTest(){ System.out.println("構造方法"); } static { System.out.println("靜態代碼塊"); } public static void main(String[] args) { PersonTest personTest=new PersonTest(); } } </em>
final 修飾符
2)修飾成員變量:
非靜態成員變量:
public class PersonTest{
private final int a;
}
只有一次機會,可以給此變量a賦值的位置:
聲明的同時賦
構造器中賦值(類中出現的所有構造器都要寫)
靜態成員變量:
public class Person{
private static final int a;
}
只有一次機會,可以給此變量a賦值的位置:
聲明的同時賦值
靜態代碼塊中賦值
abstract修飾符
注:子類繼承抽象類后,需要實現抽象類中沒有實現的抽象方法,否則這個子類也要聲明為抽象類。
類的創建和初始化過程
* 1.類加載,同時初始化類中的靜態屬性
* 2.執行靜態代碼塊
* 3.分配內存空間,同時初始化非靜態的屬性
* 4.調用 PersonTest父類構造器
* 5.對PersonTest中的屬性進行顯示賦值
* 6.執行匿名代碼塊
* 7.執行構造器
* 8.返回內存地址
package com.len.collection; public class PersonTest extends PersonTest111{ private static String username="張珊"; private String password="123456"; public PersonTest(){ System.out.println("構造方法"); } //匿名代碼塊是創建對象的時候自動執行,并且是在構造方法之前執行給方法 //作用:給對象的成員變量初始化賦值 { System.out.println("匿名代碼塊"); } //靜態方法在類被加載的時候調用 //作用:給靜態成員變量初始化賦值 static { System.out.println("靜態代碼塊"); } public static void main(String[] args) { /** * 1.類加載,同時初始化類中的靜態屬性 * 2.執行靜態代碼塊 * 3.分配內存空間,同時初始化非靜態的屬性 * 4.調用 PersonTest父類構造器 * 5.對PersonTest中的屬性進行顯示賦值 * 6.執行匿名代碼塊 * 7.執行構造器 * 8.返回內存地址 */ PersonTest personTest=new PersonTest(); } }
關于JavaSE static final及abstract修飾符實例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。