前言
面向對象最關鍵的兩個詞彙是類與對象,實質上可以將類看作對象的抽象,它定義了對象所具有的屬性和方法。學習 Java 語言必須掌握類與對象,這樣可以從深層次理解 Java 這種面嚮對象語言的幵發理念。因此,掌握類與對象是學習 Java 語言的基礎,可以使開發人員更好、更快地掌握 Java 編程思想與編程方式。
一. 面向過程與面向對象
1.1 面向過程(POP)與面向對象(OOP)
- 二者都是一種思想,面向對象是相對於面向過程而言的。
- 面向過程:強調的是功能行爲,以函數爲最小單位,考慮怎麼做。
- 面向對象:將功能封裝進對象,強調具備了功能的對象,以類/對象爲最小單位,考慮誰來做。
- 面向對象更加強調用了人類在日常的思維邏輯中採用的思想方法與原則,如:抽象、分類、繼承、聚合、多態等。
1.2 面向對象的三大特徵
- 封裝 (Encapsulation)
- 繼承 (inheritance)
- 多態 (Polymorphism)
面向對象:Object Oriented Programming
面向過程:Procedure Oriented Programming
1.3 理解面向過程與面向對象
舉例:人把大象裝進冰箱
//面向過程
1.打開冰箱
2.把大象裝進冰箱
3.把冰箱門關注
//面向對象
人{
打開(冰箱){
冰箱.開門();
}
操作(大象){
大象.進入(冰箱);
}
關閉(冰箱){
冰箱.關門();
}
}
冰箱(){
開們(){};
關門(){};
}
大象(){
進入(冰箱){};
}
1.4 面向對象的思想概念
-
程序員從面向過程的執行者轉化成了面向對象的指揮官
-
面向對象分析方法分析問題的思路和步驟:
- 根據問題需要,選擇問題所針對的現實世界中的實體。
- 從實體中尋找解決問題相關的屬性和功能,這些屬性和功能就形成了概念世界中的類
- 把抽象的實體用計算機語言進行描述,形成計算機世界中的類的定義。即藉助某種程序語言,把類構造成計算機能夠識別和處理的數據結構。
- 將類實例化成計算機世界中的對象。對象是計算機世界中解決問題的最終工具。
二. Java語言的基本元素:類和對象
2.1 類(Class)和對象(Object)是面向對象的核心概念。
- 類是對一類事物的描述,是抽象的、概念上的定義。
- 對象是實際存在的該類事物的每個個體,因而也成爲實例(instance)。
2.2 類和對象的概念
- 可以理解爲:類 = 抽象概念的人;對象 = 實實在在的某個人
- 面向對象程序設計的重點是類的設計
- 類的設計,其實就是類的成員的設計
2.3 類的語法結構
修飾符 class 類名{
屬性聲明;
方法聲明{}
}
2.4 對象的語法結構
創建對象的語法:類名 對象名 = new 類名();
使用"對象名.屬性名"的方式訪問對象的屬性
使用"對象名.方法名()"的方式訪問對象的方法
2.5 類和對象的使用
創建一個學生類
/**
*學生類
*/
public class Student{
//屬性
String name; //姓名
int age; //年齡
double score; //成績
//方法
public void showInfo(){
System.out.println("姓名:"+name);
System.out.println("年齡:"+age);
System.out.println("成績:"+score);
}
}
創建對象即調用學生類並使用
public class TestStudent{
public static void main(String[] args){
//創建對象
Student stu = new Student(); //調用學生類
//初始化屬性
stu.name="學生"; //姓名
stu.age=19; //年齡
stu.score=89.5; //成績
//調用方法
stu.showInfo(); //調用方法
}
}
2.6 數據類型的默認值
類型 | 默認值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0F |
double | 0.0 |
char | ‘\u0000’ |
boolean | false |
引用數據類型 | null |
三. 對象的內存解析
public class Person{
int age; //成員變量
public void shout(){ //方法
System.out.println("oh,my,god! I am "+age);
}
}
public class TestPerson{
public static void main(String[] args){
//創建對象
Person p1 = new Person();
Person p2 = new Person();
p1.age=-30; //初始化成員變量
p1.shout(); //調用方法
p2.shout();
}
}