面向過程和面向對象的區別
簡述
- 面向過程思想適合簡單、不需要協作的事務。比如單純駕駛汽車,不需要跟別人協作。
- 面向對象思想適合比較復雜的事務,無法列出1234步驟。比如如何造車?造車太復雜,需要很多協作才能完成。
總結
- 面向對象和面向過程都是解決問題的思維方式,都是代碼組織的方式。
- 解決簡單問題可以使用面向過程。
- 解決復雜問題:宏觀上使用面向對象把握,微觀處理上仍然是面向過程
對象和類的概念
簡述
- 對象有不同操作的方法、屬性、變量等
- 類可以看做是一個模板或者圖紙,系統根據類的定義來造出對象。
- 類:稱之為 class 。對象:稱之為 Object,instance(實例)。
- 某個類的對象等同於某個類的實例。同等含義。
類的定義
- 每個源文件必須有且只有一個 public class,並且類名和文件名保持一致。
- 一個 Java 文件可以同時定義多個 class
- 對於一個類來說,一般有三種常見的成員:屬性field、方法method、構造器constructor。這三個成員都可以定義零個或多個。
代碼示例:類的定義方式
// 下方定義的這些類都是空類,沒有任何實際意義。還需要去定義類的具體信息。
// 每個源文件必須有且只有一個 public class,並且類名和文件名保持一致。
public class SxtStu {
}
// 一個 Java 文件可以同時定義多個 class
class Tyre{
}
class Emage{
}
class Try{
}
代碼示例:簡單的學生類編寫
// 對於一個類來說,一般有三種常見的成員:屬性field、方法method、構造器constructor。這三個成員都可以定義零個或多個。
public class SxtStu {
// 屬性(成員變量)
int id;
String sname;
int age;
// 方法
void study(){
System.out.println("我正在摸魚學習!");
}
// 構造方法
SxtStu(){
}
}
屬性(field(成員變量))
簡述
- 屬性用於定義該類或該類對象包含的數據或者說靜態特征。
- 屬性作用范圍是整個類體。
- 在定義成員變量時可以對其進行初始化,如果不進行初始化,Java 使用默認的值對其進行初始化。
屬性定義格式
[修飾符] 屬性類型 屬性名 = [默認值];
成員變量默認值

方法
簡述
- 方法用於定義該類或該類實例的行為特征和功能實現。比如一個學生類,他可以有學習或者玩游戲的行為特征或者說功能實現
- 方法是類和對象行為特征的抽象。方法很類似於面向過程中的函數。
- 面向過程中,函數是最基本單位,程序是由一個個函數調用組成。
- 面向對象中,整個程序的基本單位是類,方法是從屬於類和對象的。
方法定義格式
[修飾符] 方法返回類型 方法名(形參列表){
// n 條語句
}
代碼示例:
public class SxtStu {
// 方法
void study(){
System.out.println("我正在摸魚學習!");
}
void play(){
System.out.println("我在玩游戲!LOL手游!");
}
// 構造方法
SxtStu(){
}
}
代碼示例:完整的對象與類方法的調用
- 程序必須要有 main 方法,作為程序執行的入口
- 構造方法:用於創建這個類的對象。無參數的構造方法可以由系統自動創建。
- 對於一個類來說,一般有三種常見的成員:屬性field、方法method、構造器constructor。這三個成員都可以定義零個或多個。
public class SxtStu {
// 屬性(成員變量)
int id;
String sname;
int age;
// 方法
void study(){
System.out.println("我正在摸魚學習!");
}
void play(){
System.out.println("我在玩游戲!LOL手游!");
}
// 構造方法:用於創建這個類的對象。無參數的構造方法可以由系統自動創建。
SxtStu(){
}
public static void main(String[] args) {
// 定義創建一個類的對象
SxtStu stu = new SxtStu();
// 對象調用 play() 方法
stu.play();
// 對象調用 study() 方法
stu.study();
}
}
代碼示例:模擬學生使用電腦學習
- 構造方法:用於創建這個類的對象。無參數的構造方法可以由系統自動創建。
- 對於一個類來說,一般有三種常見的成員:屬性field、方法method、構造器constructor。這三個成員都可以定義零個或多個。
// 模擬學生使用電腦學習
class Computer {
String brand; // 電腦品牌
}
public class SxtStu1 {
// 定義屬性(成員變量)
int year;
String sname;
int age;
// 在 SxtStu1 類中定義一個 Computer 類的對象
Computer comp;
// 定義方法
void study() {
System.out.printf("我正在使用%s這個品牌的電腦摸魚學習!%n",comp.brand);
}
// 構造方法:用於創建這個類的對象。無參數的構造方法可以由系統自動創建。
SxtStu1(){
}
public static void main(String[] args) {
// 定義 SxtStu1 類的對象
SxtStu1 stu1 = new SxtStu1();
// stu1 對象調用 SxtStu1 類的屬性(成員變量)並賦值
stu1.year = 2021;
stu1.sname = "阿jun";
stu1.age = 0;
// 定義 Computer 類的對象
Computer comp1 = new Computer();
// comp1 對象調用 Computer 類的屬性(成員變量)並賦值
comp1.brand = "神舟戰神";
// stu1 對象調用 comp 類屬性(成員變量)並賦值為 comp1 的值
stu1.comp = comp1;
// 對象調用方法
stu1.study();
}
}
執行結果:

UML圖示例
