国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java學習筆記四:static的幾個角落及小談多態

2019-11-14 23:58:35
字體:
來源:轉載
供稿:網友
java學習筆記四:static的幾個角落及小談多態

最近有點事情,沒有及時更新筆記,學習不可棄,總結一下最近的學習,其中重點是static的一些應用,多態是一種設計理念,了解較容易,想如火純清的確不是一件容易的事情。

對于static,主要有兩點是我所學習的。

1、首先簡單的介紹一下static的定義。static是靜態的意思,就是說這個類變量或者類方法不需要實例化就可以使用。使用static的變量是類變量,也成為靜態域(static field)。這些是static的基本語義,了解了這些,繼續向下看。

java核心技術(卷一)對于靜態有這樣一段描述:“如果將變量定義為static,每個類都只有一個這樣的變量?!?/p>

這句話怎么理解呢,語言上表述是這樣的,在一個main方法中,類變量(靜態類)是所有對象所共享的(共享的意思有點像指針,你操作其中一個去改變數值,其他的數值都會發生改變)。這就是上面說的一個類只有一個這樣的變量。

在具體的代碼中會更直接。我定義一個Test的類:

public class Test{    public static int age;    public int a;}

在Test類中有一個靜態的int型變量age和一個非靜態變量a。

現在,下面的測試類中初始化3個Test對象,分別為t1,t2,t3;將t1的age設定為10,a設定為5,那么t2的age,a以及t3的age和a分別是多少呢?

public class TetsT{    public static void main(String[] args){        Test t1=newTest();        Test t2=new Test();        Test t3=new Test();        t1.age=10;        t1.a=5;                system.out.

結果是,t1.age=t2.age=t3.age=10;

而t1.a=10;t2.a=0;t3.a=0;

原因不用解釋了吧,正如上面所說的,在一個main中一個類的類變量是共享的。這也是類變量危險的地方,盡量不要把靜態的暴露出來,可能會對程序產生影響。

2、靜態變量在繼承中是什么結果呢?

由于有了上面的鋪墊,直接寫出一個例子,有father類和繼承father的son類。結構很簡單。

public class father {    public static int a=1;}public class son extends father{}

father有靜態的類變量a,son繼承了father,這樣son有father的靜態變量a。

現在的問題是這個靜態變量有兩種可能,一是father與son共享,或者是son自己私有的。寫下面的代碼驗證:

public class test {    public static void main(String[] args) {        father f1 = new father();        father f2 = new father();        father f3 = new father();        father f4 = new son();        son s1 = new son();                f1.a=100;                System.out.println(f1.a);        System.out.println(f2.a);        System.out.println(f3.a);        System.out.println(s1.a);                son s2=new son();        s2.a=50;        System.out.println(s2.a);        System.out.println(s1.a);        System.out.println(f1.a);        System.out.println(f2.a);            }}

打印的是什么呢?在上一行中打印的都是100,下一排打印的都是50。

得出結果,繼承類,其父類的靜態方法仍是與子類共享的關系。不論是父類還是子類對其值進行修改都會影響到其他對象的值。

3、說完static,簡單的說下我對多態的學習。

多態是指一個方法名,多個行為結果。這是多態的定義。

我感覺多態最核心的一句話是多態的實現。

多態是通過重寫(覆蓋)override和方法重載overload來實現的。這句話看起來很平淡,其實不是,它包含了多態最重要的東西。

舉個例子,假如現在需要使用類的思想,打印等腰三角形、直角三角形、正方形。這樣設計。

首先設計一個超類圖形類,他有一個變量n,用來存儲需要打印的圖形行數,還有一個方法,用來執行打印操作。

三個子類等腰三角形、直角三角形和正方形繼承超類圖形。此時選擇重寫打印操作,為每一個子類寫自己的打印操作。

在測試類中,我們聲明一個超類圖形類,可以給他new各個不同的子類,這樣就可以實現父類的一種打印操作分別打印不同的圖形了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 易门县| 舒城县| 五大连池市| 洛阳市| 新和县| 雷山县| 岚皋县| 宁明县| 廊坊市| 闽侯县| 牟定县| 三门县| 彩票| 达拉特旗| 东乌珠穆沁旗| 观塘区| 平陆县| 通州市| 尚志市| 山西省| 六枝特区| 剑河县| 临湘市| 徐州市| 永昌县| 来凤县| 怀来县| 莆田市| 吴川市| 和田县| 安平县| 桦南县| 岳阳市| 那坡县| 敦煌市| 阿勒泰市| 淮滨县| 平陆县| 永定县| 玉溪市| 偏关县|