類和對象要點歸納

  1. 什麼是類? 什麼是對象?
    類就是一個模板,對象就是這個模板產生出的實例。比如說類是一張圖紙,根據這個圖紙可以造出不同的房子(對象)
    Java是面向對象的語言
    在這裏插入圖片描述
  2. oop(面向對象)語言的三大特徵:
    1.封裝性:用private修飾成員屬性,可以使該成員屬性僅在此類中有權訪問;
    2.繼承性:java中可以使用繼承(extends)這種操作,來提高代碼重用性;
    3.多態性:基類引用派生類對象,並且基類和派生類有同名的覆蓋
  3. 面向過程和麪向對象的比較
    面向過程 (C):
    程注重的是過程,在整個過程中所涉及的行爲,就是功能。
    面向對象(java,c++):
    注重的是對象,也就是參與過程所涉及到的主體。是通過邏輯將一個個功能實現連接起來。

舉例:
面向過程: 1.把冰箱打開 2. 把大象放入 3. 冰箱關起來
面向對象: 打開冰箱,儲存,關閉都是對冰箱的操作,是冰箱的行爲。冰箱就是一個對象,所以只要操作冰箱所具備的功能,都要定義在冰箱中。

  1. java(面向對象)編程開發思路

    1.找對象,
    2.創建對象
    3.使用以及擴展對象

  2. 成員方法的調用要通過實例化對象的引用來調用。
    一個類可以實例化多個對象
    當屬性值未初始化時,值爲對應類型的0值(如布爾爲flase)

class Person {
//屬性 
    public String name; 實例變量
    public int age;
    boolean flg;
    public  static int count;
    public final  int SIZE =  666;//實例變量
    public static final  int SIZE2 =  666;
    
    //功能
    public  void fun() {
        count++;
    }

    public static void fun2() {
        System.out.println("count:"+count);
        //System.out.println("name:"+name);
        //eat();
    }
    public  void  eat() {
        System.out.println(name+" "+age+"吃飯!");
    }
    public void sleep() {
        System.out.println("睡覺!");
    }
}

然後在主函數中實例化對象並進行相應操作

public class Main{    
public static void main(String[] args) {        
Person person = new Person();//通過new實例化對象        
person.eat();//成員方法調用需要通過對象的引用調用        
person.sleep();       
 //產生對象     
 實例化對象        
 Person person2 = new Person();        
 Person person3 = new Person(); 
    }
 }
  1. 靜態成員(static修飾)不屬於對象,不依賴與對象,無法通過對象的引用來調用,但可以通過類名來調用,類中static修飾的函數(靜態成員方法)無法訪問成員實例變量,因爲它不屬於對象。
class TestDemo{     
public int a;     
public static int count;         
 public static void change() {        
  count = 100;       
    //a = 10; error  不可以訪問非靜態數據成員 
      }
  } 

public class Main{      
public static void main(String[] args) {       
TestDemo.change();//無需創建實例對象 就可以調用         
System.out.println(TestDemo.count);   
       } 
 }
  1. 爲什麼main函數是(static)靜態的?
    如果沒有static,main函數就是一個普通的成員方法,想要運行就必須new一個對象對main函數進行引用,這樣主函數就沒有入口無法運行。

  2. 封裝 將成員屬性定義爲私有(private),只能通過類內部進行直接訪問

class Person { 
 private String name = "張三";    
 private int age = 18;         
 public void show() {         
   System.out.println("我叫" + name + ", 今年" + age + "歲");   
    }
 } 
 
class Test {    
 public static void main(String[] args) {        
 Person person = new Person();       
 person.show();  
    } 
    } 
 
// 執行結果 我叫張三, 今年18歲

除此之外,還可以在類內通過getter和setter函數間接訪問和初始化屬性值

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}
  1. 實例化一個對象步驟:
    1.爲對象分配內存(new)
    2.調用合適的構造函數(如果沒寫,會自己生成不帶參數的一個構造函數)

在這裏插入圖片描述
構造方法:是一種特殊方法, 使用關鍵字new實例化新對象時會被自動調用, 用於完成初始化操作.
1.方法名稱必須與類名稱相同
2.構造方法沒有返回值類型聲明
3.每一個類中一定至少存在一個構造方法(沒有明確定義,則系統自動生成一個無參構造)
構造函數可以重載(改變函數參數的個數及其類型)

  1. this 代表當前對象的引用(並不是指當前對象)(地址)因爲
    實例化一個對象分爲兩步:
    1.爲對象分配內存(new)
    2.調用合適的構造函數(如果沒寫,會自己生成不帶參數的一個構造函數)
    編程中要習慣使用this
    (當一個構造函數內用this調用另一個構造函數時,那一句只能放在第一句)

  2. 實例代碼塊一般用於初始化實例成員變量。
    靜態代碼塊一般用於初始化靜態成員屬性
    實例代碼塊先於構造函數執行,靜態代碼塊(只會執行一次)優先於實例代碼塊執行
    靜態>–實例>–構造函數

  3. 匿名對象
    匿名只是表示沒有名字的對象. 沒有引用的對象稱爲匿名對象. 匿名對象只能在創建對象時使用. 如果一個對象只是用一次, 後面不需要用了, 可以考慮使用匿名對象.

class Person {   
   private String name;   
   private int age;     
   public Person(String name,int age) {      
   this.age = age;       
   this.name = name;   
     }    
     
      public void show() {        
       System.out.println("name:"+name+" " + "age:"+age);  
          }
          
      } 
      
public class Main { 
public static void main(String[] args) {   
 new Person("張三",18).show();//通過匿名對象調用方法   
   } 
} 
// 執行結果 name:張三:18
發佈了17 篇原創文章 · 獲贊 16 · 訪問量 947
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章