CoreJava学习第五课 --- 进入第二阶段:面向对象编程思想
面向?qū)ο缶幊趟枷?/h2>
1.面向過程
? 從計算機執(zhí)行角度出發(fā) ,代碼執(zhí)行過程核心為從程序的運行過程出發(fā),構(gòu)建編程思路,例: 哥德巴赫猜想
// 面向過程1 用戶輸入一個數(shù)n2 驗證數(shù)字的正確性2.1 正確就繼續(xù)向下2.2 錯誤就重復輸入3 拆數(shù) ? ?循環(huán) n=a+b4.判斷 a和b同為質(zhì)數(shù) 則打印2.1對象
計算機中的需求來自現(xiàn)實世界,現(xiàn)實世界是由對象組成。?
對象:萬物皆對象!
對象有屬性和方法:
a.屬性: 對象有什么b.方法: 對象能做什么2.2 對象間的關(guān)系:
1. 繼承關(guān)系 ? ?is ? ?a (一般--特殊 ?從屬關(guān)系)例:寶馬汽車是汽車2. ?關(guān)聯(lián)關(guān)系 ? ?has ? a (對象的屬性又可以是另一個對象)例:汽車有發(fā)動機3. ?依賴關(guān)系 ? ?use ? a (一個對象調(diào)用另外一個對象的方法)例:司機和汽車3.面向?qū)ο笏枷?/strong>
先找到解決問題所需要的對象,再建立對象間的關(guān)系, 以及利用對象所形成的過程.4.計算機如何處理現(xiàn)實中的對象
計算機中的對象: 在計算機中,用一塊特定的存儲空間表示生活中的對象 計算機中的對象之間可以形成生活中對象之間的關(guān)系 (繼承 關(guān)聯(lián) 依賴)5.類的概念
? 類是數(shù)據(jù)類型,對象是數(shù)據(jù)
類: 對象共性的抽象, 是人對對象的認識, 是對象的模板6.類的屬性(成員變量)【重點】
? 屬性: 是成員變量
1.有默認值 ?數(shù)字類型默認值為0 ,boolean類型為false ,字符串類型為null 2.作用范圍: 全類內(nèi)部 3.成員變量可以和局部變量同名,同名時局部變量優(yōu)先成員變量和局部變量在內(nèi)存中不一樣?
7.類的方法
?java中沒有函數(shù)的概念,函數(shù)是面向過程開發(fā)中的東西,在java中只有方法的概念。聲明(5個部分組成): 修飾符(順序無關(guān)緊要) 返回值類型 方法名 (形式參數(shù)表) 拋出的異常--->聲明代表對象具有什么功能 ?實現(xiàn): {} 代表對象怎么做8.方法重載【重要】
方法重載 : 讓對象方法由于參數(shù)表的不同所造成的差異,對用戶屏蔽由編譯器根據(jù)實參來匹配相應(yīng)的方法 (編譯時多態(tài))方法重載: 方法名相同,參數(shù)表不同. 對返回值不做要求 參數(shù)表不同: 參數(shù)個數(shù)不同,參數(shù)類型不同,參數(shù)類型排列不同 ? (如果只有形參名不同,不算重載)9.構(gòu)造方法
? 注:如果一個類中沒有定義任何構(gòu)造方法,則系統(tǒng)提供默認公開無參構(gòu)造方法
構(gòu)造方法: 特殊的方法 構(gòu)造方法特點: 1.沒有返回值類型 區(qū)分構(gòu)造方法和普通方法的唯一標志 2.方法名必須和類名相同 3.不允許直接調(diào)用, 在對象構(gòu)造的過程中自動調(diào)用一次對象構(gòu)造的三個步驟:(沒有繼承的情況)? 1. 分配空間 ? ? ? 屬性被賦予默認值 ----> 根據(jù)對象的屬性分配空間,不同對象所占的空間大小不同。 2. 初始化屬性 ? ? 屬性被賦予初始值 3. 調(diào)用構(gòu)造方法 ? 屬性通常被再次賦值 class Student{//1. 分配空間 屬性被賦予默認值:name被賦值為null,age被賦值為0,score被賦值為0.0String name;int age = 10;//2. 初始化屬性 屬性被賦予初始值:age被賦值為10double score;public Student(){age = 20;//3. 調(diào)用構(gòu)造方法 ? 屬性通常被再次賦值}public Student(String n , int a , double s){name = n;age = a;score = s;} }10.new 創(chuàng)建對象
?a.創(chuàng)建對象: 類名 引用名 = new 類名(構(gòu)造參數(shù)) ?b.訪問對象的屬性或調(diào)用對象的方法: ? 引用名.屬性 ? 引用名.方法() c.引用中存儲對象的地址。 null表示空指針, 引用沒有指向任何對象11.Java中變量的數(shù)據(jù)類型
?? ? ? Java中的變量按照數(shù)據(jù)類型劃分,分為兩種
? ? ? ? 1.基本變量類型 : 存數(shù)值
? ? ? ? 2.引用類型(除了 8 種基本類型之外) : 存對象的地址
12.方法參數(shù)傳遞
參數(shù)傳遞: 基本類型參數(shù)傳值, 對象類型參數(shù)傳地址 (形參和實參指向同一對象) //基本類型參數(shù)傳值 public class TestReference{public static void main(String[] args){int a = 10;int b = a; b++;//b的值變成11System.out.println(a); //10changeInt(a);System.out.println(a); //10 } static void changeInt(int a){a++;//changeInt()方法中的a變成11,但是沒有返回給方法調(diào)用處,并沒把方法返回值賦值給原來的a} } //對象類型參數(shù)傳地址 public class TestReference{public static void main(String[] args){MyClass mc ?= new MyClass();MyClass mc2 = mc;//mc是一個引用,這句代碼把mc的引用復制給mc2,意思是mc和mc2指向的是同一個對象mc2.value++;System.out.println(mc.value); //21MyClass mc = new MyClass();/*首先,在主方法中,調(diào)用了 changeValue()方法,并且把 mc 作為實參,傳遞給形參 mc。要注意的是,由于 mc 是一個引用,保存的是一個對象的地址,因此進行傳遞時,傳遞給 mc的值就是一個對象的地址。這樣,實參 mc 引用和形參 mc 引用中保存的內(nèi)存地址相同,也就是說,這兩個引用指向同一個對象。 */changeValue(mc);System.out.println(mc.value); //21} static void changeValue(MyClass mc){mc.value++;} } class MyClass{int value = 20; }13.this關(guān)鍵字
作用:
引用 表示當前對象, 在類中訪問自己的屬性和方法時,如果不加引用,引用默認為 this.用this可以區(qū)分成員變量和局部變量
class Student{String name;int age;public Student() { }public Student(String name, int age) {this.name = name;this.age = age;} }?
this(...) 用在構(gòu)造方法中, 調(diào)用本類其他的構(gòu)造方法 用于構(gòu)造方法之間相互調(diào)用 必須是構(gòu)造方法的第一條語句
?
轉(zhuǎn)載于:https://www.cnblogs.com/chenpeisong/p/9775219.html
總結(jié)
以上是生活随笔為你收集整理的CoreJava学习第五课 --- 进入第二阶段:面向对象编程思想的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vueJs的简单入门以及基础语法
- 下一篇: 数据库设计-规范化规则