乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      封裝這件小事

       岑經(jīng)滄海難為水 2014-07-22
      封裝 (encapsulation) 
      隱藏對象的屬性和實現(xiàn)細節(jié),僅對外公開接口,控制在程序中屬性的讀取和修改的訪問級別
      簡言之,就是把對象保護起來不讓對象(你)之間訪問到,然后呢?當(dāng)然為了你的訪問會給你提供接口供你訪問比如setter和getter方法
      封裝方法 在需要封裝的變量前加修飾詞 private
      下面就舉一個簡單的例子
      ——————————————————————————————————————————————————————————------
      例1
      class Person
      {
      private String name;
      private int age;
      public void setName(String name)
      {
      this.name=name;
      }
      public void setAge(int age)
      {
      this.age=age;
      }
      public String getName()
      {
      return name;
      }
      public int getAge()
      {
      return age;
      }
      }
      class Demo
      {
      public static void main(String args[])
      {
      Person p=new Person();
      p.setName("雪飛揚");
      p.setAge(20);
      System.out.println(p.getName()+","+p.getAge());
      }
      }
      輸出結(jié)果:雪飛揚,20
      _________________________________________________________________________________________________________
      為什么要封裝?
      那必須是為了安全啊,你想啊你買了一臺電腦,沒有主機箱直接放在那里你敢用嗎?電腦容易進水壞了是小事,你要是那個啥有個萬一………是不是。
      以上面的例子為例如果上面年齡傳入了-20,那么會直接輸出年齡-20歲,這顯然是不科學(xué)的,對數(shù)據(jù)來說是不安全的。所以呢
      輸出結(jié)果:雪飛揚,-20
      這顯然不是我們想要的結(jié)果,如果沒有進行數(shù)據(jù)的封裝,我們沒有辦法解決這個問題,但是我們現(xiàn)在進行了封裝,我們可以很簡單的解決這個問題
      例2
      class Person
      {
      private String name;
      private int age;
      public void setName(String name)
      {
      this.name=name;
      }
      public void setAge(int age)
      {
      this.age=age;
      }
      public String getName()
      {
      return name;
      }
      public int getAge()
      {if (age>0&&age<130)
      return age;   
      else
          {System.out.println("您輸入的年齡信息有誤,請重新輸入后操作");
      System.exit(1);
          return 0;}
      }
      }
      class Demo
      {
      public static void main(String args[])
      {
      Person p=new Person();
      p.setName("雪飛揚");
      p.setAge(-20);
      System.out.println(p.getName()+","+p.getAge());
      }
      }
      輸出結(jié)果:您輸入的年齡信息有誤,請重新輸入后操作
      這樣就提高了數(shù)據(jù)的安全性,提高了代碼的健壯性
      ————————————————————————————————————————————————————————————
      當(dāng)然,以上是大多數(shù)書本上都會提到的內(nèi)容,不多說。下面咱們晚點其他的。
      既然成員變量被私有化了,我們想要用到他們是否一定要用到setter和getter方法呢?
      答案可定時否定的,接下來我們就看看其他方法
      例3
      class Demo
      {
          public static void main(String[] args)
          {
          Person p=new Person("哈哈",20);
          System.out.println(p);
      }
      }
      class Person {
      private String name;
      private int age;
      Person(String name,int age){//構(gòu)造函數(shù)初始化,相當(dāng)于setName和setAge方法
      this.name=name;
      this.age=age;
      }
      public String toString()//復(fù)寫toString方法,返回年齡和姓名信息,相當(dāng)于getAame和getAge方法
      {
      return this.name+","+this.age();
      }
      }
      輸出結(jié)果:雪飛揚,20
       大家第一眼看到這個代碼是不是覺得,哇塞這個代碼好  啊 ……好啊  ,好短啊……
      ————————————————————————————————————————————————————————————
      構(gòu)造函數(shù)???

      好吧,在這里再給大家說說構(gòu)造函數(shù)
      什么事構(gòu)造函數(shù)?
      所謂構(gòu)造函數(shù),就是構(gòu)造對象的函數(shù),就是創(chuàng)建對象的函數(shù)
      構(gòu)造函數(shù)有什么特點?
      1.隨著類的建立而出現(xiàn),默認為空,用戶可以自己定義構(gòu)造函數(shù)
      2.構(gòu)造函數(shù)不能有return語句,不用寫返回值。
      3.構(gòu)造函數(shù)在對象建立時調(diào)用有且僅有的一次。
      4.構(gòu)造函數(shù)用于對象的初始化。
      舉個例子:
      例4
      class Person{
      public Person()
      {
      System.out.println("我出生了****");
      }
      }
      class Demo
      {
      public static void main(String args[])
      {
      Person p=new Person();
      }
      }
      輸出結(jié)果:我出生了****
      大家是不是有點覺得這段代碼不可思議,就創(chuàng)建了一個對象,怎么就出現(xiàn)了輸出語句呢?
      這就是構(gòu)造函數(shù)完成的,它定義了函數(shù)初始化的值
      大家明白了這個原理,上面封裝的例子就不難理解了。
      ————————————————————————————————————————————————————————————
      什么還有toString() ?
      toString()方法隸屬于Object類,而所有的類都繼承Object類,也就是說所有的類都具有這個方法 ,所有的對象都可以調(diào)用這個方法。
      例5
      public class A{
      public String toString(){return "this is A";}
      }
      如果某個方法里面有如下句子:
      A obj=new A();
      System.out.println(obj);
      輸出結(jié)果:this is A 
      它通常只是為了方便輸出,比如System.out.println(xx),括號里面的“xx”如果不是String類型的話,就自動調(diào)用xx的toString()方法

      它只是sun公司開發(fā)java的時候為了方便所有類的字符串操作而特意加入的一個方法。
      依然以上面的例子為例
      例6
      class Demo
      {
          public static void main(String[] args)
          {
          Person p=new Person("哈哈",20);
          System.out.println(p);
      }
      }
      class Person {
      private String name;
      private int age;
      Person(String name,int age){//構(gòu)造函數(shù)初始化,相當(dāng)于setName和setAge方法
      this.name=name;
      this.age=age;
      }
      }

      輸出結(jié)果:Person@5ac2480b
      沒錯大家看到的是一個Person對象的地址

      那么當(dāng)我們復(fù)寫了ToString類之后呢?代碼同例3
      輸出結(jié)果:輸出結(jié)果:雪飛揚,20
       另外需要提示的一點toString方法是System.out.println()當(dāng)中唯一一個java提前幫你定義的地方。

      好了總結(jié)句話
      私有是封裝實現(xiàn)方式的一種,實現(xiàn)封裝有多種方式。
      封裝可以提高代碼的安全性和健壯性。
      封裝可以用setter和getter方法進行訪問。
      封裝中的setter和setter方法可以用構(gòu)造函數(shù)和復(fù)寫toString方法代替。
      封裝只能修飾成員變量和成員函數(shù)。


      說道做到,三句就三句,絕不多說。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多