[Java]開發(fā)安卓村砂,你得掌握的Java知識4——“類” 其之二

目錄

1.本文主要內(nèi)容簡介

2.“類”的知識補充

3.總結(jié)

0.前言

1.本文主要內(nèi)容簡介

  • 類的基礎(chǔ)知識補充

  • 對應知識的相關(guān)細節(jié)

  • 實際例子

2.“類”的基礎(chǔ)知識補充

[Java]開發(fā)安卓敷待,你得掌握的Java知識3》中,
講解了“類”的基礎(chǔ)概念仁热、屬性榜揖、方法、對象等概念

  • 本文我們則補充講解:setter/getter抗蠢、靜態(tài)方法举哟、單例設(shè)計模式、重載

什么是“setter/getter”

  • 當類中的屬性被設(shè)置為私有的(private)時候迅矛,外部無法隨便訪>問該變量

  • 此時妨猩,如果還是想要在外部對對象的屬性進行訪問,使用setter/getter就是方法之一

  • setter就是一個接收器秽褒,如果拿人作為例子壶硅,
    setter相當于是手。
    別人給我們食物销斟,一般不會也沒辦法給到我們的嘴里
    因為我們的嘴是私有的
    我們會用手去接收別人給過來的食物庐椒,然后放到嘴里,這就類似于setter的功能

public Person{
    public String name;
    private int age;
    private int id;
}

如上代碼蚂踊,age和id是不能通過對象直接在外部訪問的

Person p = new Person();
p.name = "小王"; //可以
p.age = 20; //不行约谈,私有變量不能直接外部訪問
p.id = 001;//不行,私有變量不能直接外部訪問

不能直接外部訪問,就得考慮使用setter/getter:

public Person{
    public String name;
    private int age;
    private int id;
    
   public void setAge(int age){
         this.age = age;
    }
   public int getAge(){
        return this.age;
    }

   public void setId(int id){
         this.id = id;
    }

   public int getId(){
        return this.id;
    }
}

如此就可以在外部調(diào)用對應的函數(shù)來賦值棱诱、獲取值:

Person p =new Person();
p.setAge(20);
System.out.println(p.getAge());//輸出為20

什么是靜態(tài)屬性泼橘、方法

在上一篇文章中,我們已經(jīng)大致講過了靜態(tài)方法的定義與使用
這里我們再次統(tǒng)一講解一下

  • (1)從外觀角度來說军俊,
    使用static修飾的屬性變量侥加、方法就是靜態(tài)屬性、靜態(tài)方法
  • (2)從使用的角度來說粪躬,
    靜態(tài)屬性、方法是可以直接使用類名.屬性名類名.方法的形式來調(diào)用的
  • (3)從內(nèi)存的角度來說昔穴,
    靜態(tài)的屬性镰官、方法會在對象創(chuàng)建之前優(yōu)先加載

需要注意:

  • 什么時候使用靜態(tài)方法?
    一般是不需要對象去完成的方法吗货,會寫成靜態(tài)方法
    (不需要對象一般情況意味著不需要實例化對象泳唠,使用對象的屬性來記錄數(shù)據(jù))

  • 什么時候使用靜態(tài)屬性?
    當需要定義一個不會再改變的常量的時候宙搬,會寫成靜態(tài)屬性
    (靜態(tài)的屬性只能賦值一次)
class Subject{
     public static String[] name= {"計算機","數(shù)學","英語"};
}
class Person{
     public static void sayHello(){
        System.out.println("hello");
    }
}

什么是單例設(shè)計模式

  • 在一些程序中笨腥,會使用到類似管理器的東西,這種管理器如果創(chuàng)建出一個對象勇垛,會出現(xiàn):無法保證程序的任意地方都能訪問到該對象的問題(也不能重新創(chuàng)建一個對象)

為了避免這個問題脖母,同時還要防止全局變量的產(chǎn)生,就需要用到單例設(shè)計模式

public PersonManager{
   //1.創(chuàng)建一個靜態(tài)的變量
    public static PersonManager manaer = new PersonManager();

   //2.構(gòu)造函數(shù)私有化
    private PersonManager(){}
    public void showPerson(){
          //具體函數(shù)定義
    }
}
public staitc void main(String[] args){
    PersonManager.manager.showPerson();
}
  • 單例設(shè)計模式的具體實現(xiàn)步驟就是:
    (1)將構(gòu)造方法私有化
    (2)創(chuàng)建一個靜態(tài)的變量
  • 以后要調(diào)用這個類的函數(shù)闲孤,則不要去實例化創(chuàng)建對象谆级,而是用:
    類名.manager.方法()的格式
    (manager可以改,看你具體定義的時候?qū)懙氖鞘裁矗?/li>

這樣就可以避免類的對象因為作用域問題讼积,
而在一些地方無法被調(diào)用的尷尬問題

什么是重載

所謂重載肥照,簡單來說,就是當函數(shù)a已經(jīng)存在時勤众,通過改變函數(shù)a的返回值舆绎、參數(shù)個數(shù)、參數(shù)類型中的一個或多個们颜,而產(chǎn)生的同名但是返回值吕朵、參數(shù)、函數(shù)具體內(nèi)容有一些不同的函數(shù)b

public void showText(String text){
      System.out.println(text);
}

public void showText(int num){
      System.out.println("num ="+num);
}

public int showText(int num){
      if(num==1){
          return 1;
      }else{
           System.out.println("num ="+num);
          return 0;
      }
     
}
  • 同樣是叫做showText掌桩,但是這三個函數(shù)卻不盡相同边锁,這就是函數(shù)的重載。
  • 在調(diào)用的時候波岛,根據(jù)返回值茅坛、參數(shù)的不同,會自動判斷使用哪個函數(shù)

3.總結(jié)

(1)基本上將類的知識講完了(還有一些日后再補充),有了這些知識基本上就可以正式去寫一些Java代碼了
(2)這里沒有貼出實際例子贡蓖,知識給了一些臨時例子的理由是曹鸠,面向?qū)ο蟮乃季S使得程序中各個部分都盡可能地形成了一個整體,零散的代碼其實意義不大
(3)如果說C語言寫代碼時斥铺,要將問題盡可能往程序上靠攏彻桃,讓問題服務(wù)于代碼,那么Java可以說是反過來晾蜘,讓程序盡可能貼近于現(xiàn)實邻眷,將一切都盡可能地形成一個整體(封裝),而不是只是在堆砌函數(shù)
(4)因此在日后剔交,當某個程序?qū)懙谋容^完整后肆饶,才會考慮將代碼貼出并且進行詳細分析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市岖常,隨后出現(xiàn)的幾起案子驯镊,更是在濱河造成了極大的恐慌,老刑警劉巖竭鞍,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件板惑,死亡現(xiàn)場離奇詭異,居然都是意外死亡偎快,警方通過查閱死者的電腦和手機冯乘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滨砍,“玉大人往湿,你說我怎么就攤上這事⊥锵罚” “怎么了领追?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長响逢。 經(jīng)常有香客問我绒窑,道長,這世上最難降的妖魔是什么舔亭? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任些膨,我火速辦了婚禮,結(jié)果婚禮上钦铺,老公的妹妹穿的比我還像新娘订雾。我一直安慰自己,他們只是感情好矛洞,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布洼哎。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪噩峦。 梳的紋絲不亂的頭發(fā)上锭沟,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音识补,去河邊找鬼族淮。 笑死,一個胖子當著我的面吹牛凭涂,可吹牛的內(nèi)容都是我干的祝辣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼切油,長吁一口氣:“原來是場噩夢啊……” “哼较幌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起白翻,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绢片,沒想到半個月后滤馍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡底循,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年巢株,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熙涤。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡阁苞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出祠挫,到底是詐尸還是另有隱情那槽,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布等舔,位于F島的核電站骚灸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏慌植。R本人自食惡果不足惜甚牲,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝶柿。 院中可真熱鬧丈钙,春花似錦、人聲如沸交汤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至喉誊,卻和暖如春邀摆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伍茄。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工栋盹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人敷矫。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓例获,卻偏偏與公主長得像,于是被迫代替她去往敵國和親曹仗。 傳聞我的和親對象是個殘疾皇子榨汤,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容