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