1. 程式人生 > >第五章,面向對象基礎篇

第五章,面向對象基礎篇

charat 對象 avg buffer turn 設計 矛盾 ont 強調

5.3 封裝性
  ? 為了解決屬性必須封裝且又必須訪問的矛盾,只要是被封裝的屬性,必須通過setter和getter方法設置和取得。
  ? 為前面類的私有屬性加上getter和setter方法

Public void setAge(int a){
  Age = a;
}
Public int getAge(){
  Return age;
}

setter方法可以加上檢測代碼檢測輸入的數據是否合法。


5.4構造方法
  

Person per = null;聲明對象時不調用構造方法。
Per = new Person();實例化對象時調用構造方法。

? 構造方法也是可以重載的。只要每個構造方法的參數類型或參數個數不同,即可實現重載。


5.5 匿名對象
匿名對象只在堆內存中開辟空間,而不在棧內存的引用。

new Person("cathy",30).tell(); //匿名對象

5.6 實例講解

class Student{
  private String stuno;
  public Student(){
    public Student(String stuno){
      this.setStuno(stuno);
    }
  }
  public float sum(){
    return math+english;
  }
  public float avg(){
    return this
.sum/3;   }

5.7 String
? ==是用來進行地址比較的
Str2 str3指向同一個空間,他們的地址值就是相同的。
內容比較用equals,

str2.equals(str3)
“hello”.equals("hello"),一個字符串可以調用string類中的方法,說明一個字符串就是一個string類的匿名對象。

? String str1 = “hello”;

使用這種方式定義字符串有一個好處,就是如果一個字符串已經被一個名稱所引用,則以後再有相同的字符串聲明時,就不會再重新開辟空間。

String str2 = “hello”; str2==str1.
java中有個字符串池。這種設計叫共享設計,設計思路是,對象池中保存多個對象,新實例化的對象如果已經在池中定義了,則不再重新定義,指向已存在的實例空間。
使用new關鍵字,無論如何都會重新開一個空間。
對於字符串,就直接賦值,不要采用new。


? 字符串的內容一旦聲明不可改變。
非要改變就用stringbuffer類。

? String (char[] value)字符數組變字符串。這是一個構造方法
char[] toCharArray() 字符串變字符數組。這是一個普通方法
char charAt(int index)字符串中取出指定位置字符
int length()字符串長度
String trim() 清除左右兩端空格
String[] split(String regex) 按指定字符串拆分 

IO操作中經常會遇到字符串與byte數組或char數組之間的轉換操作。

? length取得數組的長度。
length()取得字符串的長度。

5.8

5.9 this 關鍵字
? 可以使用this強調本類中的方法
表示類中的屬性

public Person(String name){
  name=name;
}
Vs.
public Person(String name){
  This.name=name;
}

調用本類的構造方法?????????

表示當前對象

第五章,面向對象基礎篇