java基礎(5)----面向對象
- 編程思想:
簡單的說一下,我們學習編程,最重要的就是要有編程思想,而編程思想無非就是面向過程和面向對象,以下談談我對編程思想的理解。
面向過程:
從過程入手,第一步,第二步…….借助過程與過程的配合,完成需求。
例如: 小明進入房間,需要以下幾個步驟:
第一步打開房間門,第二步小明進去,第三步把房間門關上。
每一步都是一個過程,如果小王,小李等等進來呢,一直重復這幾個過程,會顯得程序冗余復雜。此時面向對象的出現完美解決了這種問題。
面向對象:----模擬現實世界編程。
從對象入手,把和需求相關的對象提取出來,借助對象和對象的配合,實現需求。
例如:小明進入房間:
先向小明下達開門的指令,然後向小明下達進入指令,最後向小明下達關門指令,小明就是對象,面向對象編程。
- 面向對象----Object Oriented
- 什麽是對象:----萬物皆對象。
現實生活中的對象都具有兩個主要要素,一個是對象有什麽,一個是對象幹什麽
對應程序中的屬性和方法。
- 計算機中的對象:----是一塊存儲空間,是現實對象在計算機中的抽象表示。
- 類:----是具體對象的共性提取,對象是類的具體存在。
- 什麽是對象:----萬物皆對象。
- 類的組成。
- 屬性:
- 數據類型 變量名;//聲明----string name;
- 數據類型 變量名 = 值;//聲明並賦初值----string name="zhangsan"
- 方法:----修飾符 返回值類型 方法名(形參列表){//聲明部分
//實現部分
}
- 構造方法:----特殊的方法。
- 方法名必須和類名完全一致;
- 沒有返回值類型。
使用:
構造方法不允許手動調用,每次創建對象時由解釋器自動調用
構造方法的作用是給屬性賦值
如果類中沒有定義構造方法,系統會默認分配一個公共無參的構造方法。
類的式例代碼:
- 屬性:
package com.lvsling.test;
public class Student { //屬性 String name;//聲明屬性 int age=10;//聲明屬性並賦值 boolean
sex; //無參構造方法 public Student() {
} //有參構造函數 public Student(String name, int age, boolean sex) { super(); this.name = name; this.age = age; this.sex = sex; } //普通方法 public void Test1(){ System.out.println("這是普通方法"); } } |
- 創建對象
- 語法:類名 變量名 =new 類名(構造參數);
- 使用:對象名.屬性名 = 新值;//修改對象的屬性值
對象名.屬性名 //獲取對象的屬性值
對象名.方法名(實參列表);//調用對象的方法。
package com.lvsling.test;
public class TestOO { public static void main(String[] args) { //創建對象 Student s=new Student("zhangsan",18,true); //修改對象的屬性值 s.age=25; //獲取對象的屬性值 System.out.println(s.age); //調用對象的方法 s.Test1(); } } |
- 創建對象的過程
- 分配空間--------給所有屬性賦值默認值
- 初始化屬性---------給屬性賦初值
- 調用構造方法-------給屬性進行第三次賦值
- 總結:
以上說明了面向對象中的類的書寫,創建對象以及調用方法的過程。面向對象是java學習的核心思想,面向對象編程是模擬現實生活進行編程的思想,對象共性提取抽象化,面向對象高內聚,弱耦合大大提高了程序代碼的可重用性和可擴展性。
提升與拓展:
類的屬性是實例變量,也叫全局變量:
- 位置:類以內,方法以外(方法內的是局部變量)
- 默認值:有默認值,string---null,int----0,Boolean----false等
- 作用域:至少本類可以用
- 命名沖突:實例變量和局部變量可以重名,重合範圍內局部變量優先。
方法重載----OverLord:在同一個類中,可以定義多個名稱相同,參數不同的方法
要求:形參列表不同----順序,類型,個數。對返回值無要求
好處:屏蔽因參數列表不同帶來的差異,方法調用簡單,靈活。
java基礎(5)----面向對象