Java里面static, final, this, super, 代码块, 单例模式
生活随笔
收集整理的這篇文章主要介紹了
Java里面static, final, this, super, 代码块, 单例模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
static關(guān)鍵字
package csdn;public class staticWord {public static void main(String[] args) {funStatic fs1 = new funStatic();funStatic.showA();fs1.b = 2;fs1.showB(); // 2System.out.println("----------");funStatic fs2 = new funStatic();funStatic.a = 3;funStatic.showA();fs2.showB(); // 1} }class funStatic {public static int a = 1; //靜態(tài)的公共的。int b = 1;static void showA() {System.out.println("a = " + a);}void showB() {System.out.println("b =" + b);} }/** 結(jié)果* * a = 1b =2----------a = 3b =1* * static 關(guān)鍵字:* 從上面的分析, * 1, 靜態(tài)里面不能有普通屬性, 普通方法, 因?yàn)殪o態(tài)屬于類, 跟隨類先加載出來在方法區(qū)。* 2, 靜態(tài)在方法區(qū)的靜態(tài)區(qū)域, 還是那句話, 屬于類, 它被修改, 值也發(fā)生變化。* 3, 變量卻不同, 它跟隨對象而變。* conclusion : * 普通方法, 字段屬于對象, 對象變, 小心對應(yīng)的值。* 靜態(tài)屬于類, 一變, 則對應(yīng)的值也變, 它一直在, 像無臉男一樣。* 優(yōu)先對象加載。* 靜態(tài)里面只能調(diào)用靜態(tài)。* */final 關(guān)鍵字
class A {public final void show() {System.out.println("say hello to goodbye!");}public final int a = 0;//a = 0; 錯誤 }class B extends A {/*public void show() {} 錯誤*/}/*final conclusion:** 被final修飾的類不可被繼承。** 被final 修飾的方法不可以被重寫。* * final 修飾的變量不可被改變, 被當(dāng)作常量。* */this關(guān)鍵字
class word {String hello;String rye;int index;public word() {}public word(int index, String rye, String hello) {//this();this("hello");//this 調(diào)用構(gòu)造函數(shù)。 但是構(gòu)造函數(shù) 只能出現(xiàn)在構(gòu)造方法里面的第一行,有且只有一個。this.rye = rye;this.index = index;//this 區(qū)分全局與局部變量。}/*類比.net里面的this關(guān)鍵字,它只能指代這個類,this.類里面的屬性和方法。* 卻不能像Java一樣 用this調(diào)用自身的構(gòu)造函數(shù)。* */public word(String hello) { this.hello = "hello"; }//word有三個方法的重載,且在同一個類中,參數(shù)個數(shù)不同,或者參數(shù)的類型不同。與返回值無關(guān),與參數(shù)列表有關(guān)。 }繼承里面的關(guān)鍵字 super
package csdn;public class C12_6 {public static void main(String[] args) {son s = new son();s.show();System.out.println("---------");son ss = new son("rye girl");ss.show();} }class father { String name; String sex;double money;private String wife;public father() {System.out.println("父類無參構(gòu)造。");}public father(String name, String sex) {super(); //object(父類) 的構(gòu)造函數(shù)this.name = name;this.sex = sex;System.out.println("父類兩個帶參數(shù)的有參構(gòu)造。");}public String getWife() {return wife;}public void setWife(String wife) {this.wife = wife;}public void show() {System.out.println("i am a father!");}}class son extends father{private String wife;double money;public son() {super();System.out.println("子類的無參構(gòu)造。");}public son(String wife) {super("les", "male");this.wife = wife;System.out.println("子類的有參構(gòu)造。");}public void show() {System.out.println("i am your son!");}public void setWife(String wife) {this.wife = wife;}public String getWife() {return wife;} }/* 結(jié)果:父類無參構(gòu)造。子類的無參構(gòu)造。i am your son!---------父類兩個帶參數(shù)的有參構(gòu)造。子類的有參構(gòu)造。i am your son!super 作用:* 1, 區(qū)分父子類; * 2,調(diào)用父類構(gòu)造函數(shù), 也要把super放在構(gòu)造第一行。與this 有異曲同工之妙, 只是關(guān)鍵字不同。* super("","","" ...);* 3, 可以理解為父類的地址。* * 注意在調(diào)用構(gòu)造函數(shù)時(shí), jvm 先加載父類的構(gòu)造。但是在使用對象的方法, 或者對象的屬性時(shí), 子類* 里面有就用自己的, 沒有就拿爸爸的。* * 與.net base 區(qū)分。* 語法不同而已, 也是指代父類。* * public student() : base (3,"","",""){Console.WriteLine("學(xué)生構(gòu)造。");}* */代碼塊 (三個)
package csdn;public class codePiece {public static void main(String[] args) {//代碼塊: 規(guī)定代碼的生命周期的范圍, 出現(xiàn)在方法里面, 或者類中方法外{//普通代碼塊:運(yùn)行完便消失, 節(jié)約資源的一種方式。 int a = 1;System.out.println(a);}System.out.println("-------------");code c = new code();c.show();} }class code {String java;String C;String OC;public code() {System.out.println("code無參構(gòu)造。");}{//構(gòu)造代碼塊 在構(gòu)造函數(shù)初始化時(shí) 便調(diào)用System.out.println("非類方法外, 構(gòu)造代碼塊。");}static {//靜態(tài)代碼塊System.out.println("非類方法外, 靜態(tài)代碼塊。");}void show() {{int a = 0;System.out.println(a);}{int a = 0;System.out.println(a);}} }/*結(jié)果:* 1 ------------- 非類方法外, 靜態(tài)代碼塊。 非類方法外, 構(gòu)造代碼塊。 code無參構(gòu)造。 0 0* * * conclusion:* 方法里面的代碼塊, 和非方法類里面的代碼塊。* * 非方法里的代碼塊分為 靜態(tài)代碼塊和構(gòu)造代碼塊。* * 靜態(tài)代碼塊優(yōu)先構(gòu)造代碼塊, 構(gòu)造代碼塊優(yōu)先構(gòu)造函數(shù)出現(xiàn)。* */單例模式
package csdn;public class single {String name;static single s = new single();//單例設(shè)計(jì)模式 : 讓一個類只能生成一個對象//先將構(gòu)造方法私有化, 讓外部不能創(chuàng)建 對象, 而通過一個方法來訪問這個對象一次。//既然不能new 對象, 那么怎么訪問這個方法? 所以靜態(tài)就來了private single() {} public static single show() {return s;} }class testSingle {public static void main(String[] args) {single s1 = single.show();single s2 = single.show();System.out.println(s1 == s2);//true//說明是同一個對象。 私有化構(gòu)造, 利用靜態(tài)實(shí)現(xiàn)單例, 讓這個對象只出現(xiàn)一次。} }總結(jié)
以上是生活随笔為你收集整理的Java里面static, final, this, super, 代码块, 单例模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vba合并单元格
- 下一篇: java弹出提示窗口_Java实现弹窗效