java深層理解面向對象

面向過程與面向對象


面向過程 面向對象
效率高 效率低
可維護性比較低(即耦合度比較高) 可維護性比較高(耦合度比較低)
適合嵌入式開發 適合應用開發

面向對象詳解

1.類

類是抽象的,用來描述事物的(不佔內存)

2.對象

對象是具象的,是類的一個實例(佔內存)
1)屬性:靜態的(固有特徵)
2)行爲:動態的(方法)

3.類和對象之間的關係

類是對象的描述,對象是類的體現

4.類的結構

1)屬性
2)方法
3)構造方法

5.面向對象的特徵

1)封裝:將事物的內部細節隱藏起來,對外暴露訪問的接口
2)繼承:子類擁有父類的屬性和行爲。繼承最大好處:提升代碼的複用性
3)多態:同一個動作作用於不同的對象產生不同的行爲。
多態的類型:編譯時多態(方法重載);運行時多態(子類父類),
轉型

6.語法:
1)類:訪問修飾符 class 類名{}(類存儲在方法區)
2)屬性(成員屬性,成員變量):訪問修飾符 數據類型 屬性名稱;

-----普通的成員變量:存儲在堆中
----類變量: 隨着類的產生而產生,隨着類的加載而加載,存儲在方法區eg:static int age;
----常量:存在方法區的常量池中 static final String country = “CHINA”;

3)訪問修飾符

----public 任何地方均可訪問
----private 只有當前類可訪問
----protected 在當前包中訪問或派生類中訪問
----default 在同一個包中可訪問

4)成員方法

重載的範圍是在同一類中。

5)構造器

----構建對象。
----通過構造器可以初始化成員屬性(賦初始值)
----與類同名,無返回值
----可以重載
----所有的類都有構造器
----當類中沒有顯式的構造器時,其實存在一個無參的構造器
-----當類中有顯式的構造器時,會覆蓋隱藏的構造器

6)創建對象:

----new 構造器,例如Person person = new person();
----person 是變量,不是對象,=的右側是對象
----Person p1 = null;在堆中沒有具體的實例,不能p1.name;
----Person p2;局部變量沒有賦值,不能訪問。

7)調用方法:

對象名.方法名();

8)訪問屬性:

對象名.屬性名;//訪問除private之外的

9)局部變量和成員變量:

作用域不同
----成員變量是在類中聲明
----局部變量在方法內
存儲位置不同
----成員變量存儲在堆中
----局部變量存儲在棧中
初始值或賦值不同
----成員變量都有默認值(引用類型默認值都爲null)
----局部變量沒有默認值,只有顯示賦值才能訪問
訪問修飾符
----成員變量有
----局部變量沒有

三、Java程序執行流程

1)將編寫的Java源程序(.java)通過編譯爲字節碼文件(class)
2)通過JVM類加載器加載所有的字節碼文件
3)加載完字節碼文件後交給JVM執行引擎執行Java程序
注意:所有的Java程序最終都是在運行時數據區來運行
在這裏插入圖片描述

四、Java的內存結構

1.方法區:

----存儲類的信息:訪問修飾符,全類名(包名+類名),註解
----靜態成員屬性(static修飾的成員屬性)
----存儲常量(static final修飾的)
----靜態方法(static修飾的成員方法)
----成員方法

2.棧

----局部變量
----對象的引用

3.堆

----new 出來的對象
----數組,接口

五、快捷鍵

ctrl + shift + t:查看API
ctrl + o(歐):查看類的方法變量類型等
alt + /:給出提示信息
ctrl + d:刪除選擇的幾行
ctrl + 1:自動生成相應變量
/**回車:多行註釋

六、保留兩位小數

DecimalFormat df = new DecimalFormat(“0.00”);
//調用格式化的方法,結果保留兩位小數
String format = df.format(result);
//將String類型轉化爲double類型
double area = Double.parseDouble(format);

七、字符串

//將char類型的在數組轉化爲字符串
String str1 = new String(new char[] {‘a’,‘b’,‘c’});
System.out.println(str1);
//將字符串轉化爲char類型的數組
String str2 = “hello”;//存儲在常量池裏

八、封裝

1)概念:將類的內部細節隱藏起來,對外提供訪問的接口
2)如何封裝
----將成員屬性聲明爲私有
----增加set,get方法(類似於文件的讀寫屬性)
3)this
----用來區分成員變量和局部變量
----代表當前對象(那個對象調用this就是誰)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章