java物件導向

來源:互聯網
上載者:User

標籤:

  
1.物件導向是相對於面向過程而言的。
  (1)面向過程強調過程,執行者。  (2)面向過程強調過程,指揮者。我讓你幫我買煙,就是物件導向。我自己去買煙就是面向過程。  (3)物件導向的特點:a.封裝b.繼承c.多態
2.類和對象:
  (1)類是對現實世界的描述。  (2)對象是現實中存在的個體。 
3.成員變數和局部變數
  (1)作用範圍:局部變數在方法內,成員變數在類中。  (2)儲存空間:局部變數在棧中,成員變數在堆中。  (3)初始化值:局部變數人工初始化賦值,成員變數jvm預設初始化。 
4.匿名對象的使用
  (1)對對象中的功能只執行一次的時候使用,否則用有Moniker。  (2)勇於作為實際參數進行傳遞。 
5.封裝:把屬性隱藏僅對外提供公用的存取方法。
  好處:便於重複使用,安全性高。
6.private:
  (1)可以早方法中對成員變數的訪問進行控制。私人只是封裝的一種體現形式。  (2)常用方法:   無傳回值 void setAge(int a){}   又傳回值 int getAge(){}
class Demo{
  int age;//把屬性私人對外提供公用的存取方法,可控性提高了
  public void setAge(int age){//age = -20;
    if(age>=0 && age<=200){
    this.age = age;
}
else {
  System.out.println(‘請回火星‘);
  }
}
public int getAge(){
  return age;
  }
}
class DemoTest{r /> public static void main(String[] args) {
  Demo d = new Demo();
  d.setAge(-20);
  System.out.println(d.getAge());
  }
}
 
7.建構函式特點:
  (1)方法名必須與類名相同  (2)建構函式沒有傳回值也不能定義為void,方法名前不聲明方法類型  (3)構造方法不能有編程人員調用而是由系統調用  (4)一個類可以定義多個構造方法  (5)若沒定義建構函式系統會給一個預設的無參建構函式  (6)給對象初始化,一建立對象系統就會自行調用 列:class Person{
  int age;
  String name;
  Person(){}//無參的構造器
Person(int age,String name) {//age = 20,name = ‘zhangsan‘;
  this.age = age;
  this.name = name;
  }
public void speak(){
System.out.println(age + ‘.....‘ + name);
  }
}
 *****************************************
class Demo{
public static void main(String[] args) {
  //Person p = new Person(20,‘zhangsan‘);
  Person p = new Person();
  p.speak();
  }
}

8.this關鍵字:
哪個對象調用this所在的函數this就代表了那個對象。  作用:    (1)函數參數或者函數中的局部變數和成員變數同名的情況,用this.成員變數名來引用成員變數。    (2)在函數中需要引用該函數所屬類的當前對象時候直接用this    (3)this(參數列表)在一個建構函式中調用另一個建構函式用這種this語句(只可放在建構函式第一行)。列:
Person(String name){
  this.name = name;
}
Person(String name,int age){
  this(‘張三‘);//是找帶一個字串型別參數的構造方法
  this.name = name;
  this.age = age;
  //this(‘zhangsan‘);
}
****************************************************class Demo{
public static void main(String[] args) {
   Person p = new Person(‘lisi‘,20);

  }
}

9.代碼塊:
(1)局部代碼塊定義在方法裡,可以控制變數的生命週期(2)構造代碼塊定義在類裡,每建立一次對象就執行一次(3)靜態代碼塊給類進行初始化,只在第一次new執行一次。  Person p =new Person的過程中在記憶體做了什麼:a.將Person.class載入進記憶體b.p定義函數中,在棧記憶體中開闢了變數空間pc.在堆記憶體中分配空間並分配記憶體位址值,d.給對象中的屬性進行預設初始化額e.給對象中的值進行顯示初始化f.調用構造代碼塊對對象進行初始化g.調用建構函式進行初始化h.將對象的記憶體位址值賦值給p變數,讓p變數指向該對象。
10.static靜態用於修飾成員變數,成員被靜態修飾後可以直接用:類名.靜態成員調用。
靜態特點:隨類的載入而載入,生命週期長。優先於對象存在。被所有對象共用。靜態變數都被儲存在方法區。執行個體變數是非靜態成員變數,類變數是靜態變數。類變數隨類的載入存在於方法區,執行個體變數隨對象的建立存在於堆中。類變數所屬於整個類,被所有對象共用,執行個體變數是對象的特有資料。要注意:1)靜態方法只可以訪問靜態成員,非靜態方法既可以訪問靜態頁可以訪問非靜態。2)靜態方法中不可以定義this super關鍵字因為靜態優先於對象存在,所以靜態方法中不可以出現this。 靜態利弊:對對象的共用資料提供單獨的儲存空間,不用每個對象都存一份節約記憶體,可以類名.直接調用。生命週期過長,靜態雖好,只可訪問靜態。什麼時候可以使用靜態:成員變數所儲存的資料每個變數否擁有這個資料,沒必要儲存到對象中,讓所有對象共用該資料即可,用static修飾。什麼時候定義靜態函數:當成員函數沒有訪問對象的特有資料是,就將該方法定義成靜態,該方法沒有訪問到靜態特有資料,直接類名.調用即可。 
11.單利設計模式:
餓漢式:  1)私人建構函式  2)建立一個本類對象  3)定義一個公用的訪問方式: class Single {
  private Single() {}
  private static Single s = new Single ();
  public static Single getInstance(int num) {
    return s;
}
懶漢式:
1)私人建構函式2)聲明一個本類引用3 )定義一個公用的訪問方式
class Single {
  private Single() {}
  private static Single s;
public static Single getInstamce (int num) {
  if (s==null) {
  s = new Single();
  }
return s;
}

 

java物件導向

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.