1、初識面向對象
面向過程&面向對象
◆面向過程思想
◆步驟清晰簡單,第一步做什么,第二步做什么....
◆面對過程適合處理一些較為簡單的問題
◆面向對象思想
物以類聚,分類的思維模式,思考問題首先會解決問題需要哪些分類,然后對這些分類進
行單獨思考。最后,才對某個分類下的細節進行面向過程的思索。
◆面向對象適合處理復雜的問題,適合處理需要多人協作的問題!
◆對于描述復雜的事物,為了從宏觀上把握、從整體.上合理分析,我們需要使用面向對象的思路
來分析整個系統。但是,具體到微觀操作,仍然需要面向過程的思路去處理。
什么是面向對象
◆面向對象編程(Object-Oriented Programming, 00P)
面向對象編程的本質就是:以類的方式組織代碼,以對象的組織(封裝)數據。
抽象
三大特性:
封裝
繼承
多態
從認識論角度考慮是先有對象后有類。對象,是具體的事物。類,是抽象的,是對對象的抽象
◆從代碼運行角度考慮是先有類后有對象。類是對象的模板。
2、 方法回顧和加深
◆方法的定義
◆修飾符
◆返回類型
◆break:跳出switch,結束循環 ;和return的區別;return 結束一個方法,返回結果,
◆方法名
◆參數列表
◆異常拋出
◆方法的調用
◆靜態方法
◆非靜態方法
1 public class Demo02 { 2 public static void main(String[] args) { 3 //實例化這個類 new 4 //對象類型 對象名 = 對象值 5 Student student = new Student(); 6 student.say(); 7 } 8 9 //和類一起加載的 10 public static void a(){ 11 12 } 13 //類實例化后才存在 14 public void b(){ 15 16 } 17 18 19 }
◆形參和實參
1 public class Demo03 { 2 public static void main(String[] args) { 3 //形式參數和實際參數的類型要對應 4 Demo03.add(1,3); 5 } 6 7 //形式參數int a,int b 8 public static int add(int a,int b){ 9 return a+b; 10 } 11 }
◆值傳遞和引用傳遞
package com.zhexuejia.oop;
//值傳遞
public class Demo04 {
public static void main(String[] args) {
int a = 1;
System.out.println(a);
Demo04.change(a);
System.out.println(a);
}
//返回值為空
public static void change(int a){
a=10;
}
}
package com.zhexuejia.oop; 2 3 //引用傳遞:對象,本質還是值傳遞 4 //對象內存 5 public class Demo05 { 6 public static void main(String[] args) { 7 Person person = new Person(); 8 System.out.println(person.name);//null 9 Demo05.change(person); 10 System.out.println(person.name);//輸出那么值 11 } 12 public static void change(Person person){ 13 //person是一個對象,指向 Person person = new Person();這是一個具體的事物 14 person.name="禽獸"; 15 } 16 } 17 //定義一個Person類,有一個屬性:name 18 class Person{ 19 String name; 20 }
◆this關鍵字
類與對象的關系:
類是一種抽象的數據類型,它是對某一類事物整體描述定義,但是并不能代表某一個具體的事物.
動物、植物、手機、電腦..…
Person類、Pet類、Car類等,這些類都是用來描述/定義某一類具體的事物應該具備的特點和行為
對象是抽象概念的具體實例
張三就是人的一個具體實例,張三家里的旺財就是狗的一個具體實例。能夠體現出特點,展現出功能的是具體的實例,而不是一個抽象的概念.
我們可以將這些思想轉換為代碼實現!
1 public class Person { 2 3 //一個類即使什么都不寫,他也會存在一個方法 4 //顯示的定義構造器 5 String name; 6 7 //實例化初始值 8 //使用new構造器,本質是在調用構造器 9 //用來初始化值 10 //alt + insert 11 public Person(){ 12 13 } 14 //有參構造,一旦定義了有參構造,無參就必須顯示定義 15 public Person(String name){ 16 this.name=name; 17 } 18 19 } 20 21 /** 22 * //new 實例化了一個對象 23 * Person person = new Person(); 24 * 25 * System.out.println(person.name); 26 * } 27 * } 28 */
3、對象的創建分析
4、面向對象三大特性
封裝:
◆該露的露,該藏的藏
我們程序設計要追求“高內聚,低耦合”。高內聚就是類的內部數據操作細節自己完成,不允許外部
干涉;低耦合:僅暴露少量的方法給外部使用。
◆封裝(數據的隱藏)
◆通常,應禁止直接訪問-一個對象中數據的實際表示,而應通過操作接口來訪問,這稱為信息隱藏。
記住這句話就夠了:屬性私有,get/set
繼承:
◆繼承的本質是對某-批類的抽象,從而實現對現實世界更好的建模。
◆extands的意思是“擴展”。子類是父類的擴展。
◆JAVA中類只有單繼承,沒有多繼承!
◆繼承是類和類之間的一 種關系。除此之外,類和類之間的關系還有依賴、組合、聚合等。
◆繼承關系的倆個類, -一個為子類(派生類),-個為父類(基類)。子類繼承父類,使用關鍵字extends來表示。
< >子類和父類之間,從意義上講應該具有"is a"的關系.
object類
super
◆方法重寫
5、抽象類和接口
6、內部類及OOP實戰
浙公網安備 33010602011771號