嘿,你對象在這兒—— 面向對象:類和對象

相信很多小夥伴學Java的時候都是戰術開頭:HelloWorld!

首先,創建一個類,然後寫一個主方法,最後打印輸出,ojbk完事兒。等到我們學面向對象的時候不得不去了解一下什麼是類,什麼是對象,他倆是啥關係。

嘿,你對象在這兒—— 面向對象:類和對象

那麼類和對象到底是什麼呢?

類就是有某些共同特徵的實體的集合;對象就是類的實例,一個對象當然就是一個類的實例。來,上例子:有一句話叫物以類聚人以群分,咱們拿人來舉例,人類或者說人當然是一個類,因為你說人的時候它不是一個實體,也就是不知道說的是哪個人;但是說人的時候我們都知道特徵,有鼻子有眼的,能製造和使用工具。還記得初一英語的第一篇對話不,I'm Kangkang are you Michael?這裡的Kangkang和Michael是不是對象,當然是,Kangkang有鼻子有眼的吧。不能說人家不會製造和使用工具吧,簡單的也算,符合人這個類的特徵,又是一個實例,所以人家是一個對象,那Michael呢?當然也是一個對象。

嘿,你對象在這兒—— 面向對象:類和對象

類和對象的關係該亮出來了,類是對象的抽象,對象是類的實例。

啥意思呢,首先我不知道小夥伴對於抽象的理解是不是和我以前一樣,具體的反義詞啊,很難描述的東西啊,其實這裡的抽象簡單來說就是抽出像的部分,你看Kangkang有鼻子有眼的,會走路、吃飯、睡覺......那Michael也是,你也是,我也是;每一個人都有的特點抽取出來歸為人類。那對象是類的實例就應該很好理解了,Kangkang這個對象是不是人的一個實例?當然是,你家的貓是不是貓的一個實例?毛茸茸的,還會喵喵叫,當然是,那別人家養的貓自然也是貓類的一個實例。

嘿,你對象在這兒—— 面向對象:類和對象

這裡再說一下對象的屬性和方法,

然後咱們就上一段代碼,對象包含屬性和方法,屬性就是對象的一些特徵,比如:名字,性別,身高;方法可以理解為對象的某些行為,比如給吃飯,睡覺,學習。來上一段代碼:

<code> 1 package test;
2
3 public class Person {
4
5 int age;// age屬性
6 String name;// name屬性
7
8 // 定義一個睡覺方法
9 public void sleep() {
10 System.out.println("睡覺");
11 }
12
13 // 定義一個學習方法
14 public void study() {
15 // 方法中可以加上屬性
16 System.out.println(name + "學習");
17 }
18
19 public static void main(String[] args) {
20
21 // 創建一個Person類的對象p1
22 Person p1 = new Person();
23
24 // 通過 對象.屬性 來給屬性賦值
25 p1.name = "Kangkang";
26 p1.age = 18;
27 System.out.println(p1.name);
28
29 //通過對象.方法來調用方法

30 p1.sleep();
31
32 }
33
34 }
    
執行結果:
     Kangkang
     睡覺 
/<code>

不知道有沒有初學者想問為啥Kangkang在睡覺前面打印,結果中的Kangkang是直接在main方法中打印p1對象的name屬性得到的,而睡覺則是p1對象調用的前面的sleep方法,在執行調用的方法的時候打印的。

我們來給創建對象那一句拿出來看看

這個類只能創建一個對象嗎?

當然不是,只要你想要多少new多少

<code> 1 package test;
2
3 public class Person {
4
5 int age;// age屬性
6 String name;// name屬性
7
8 // 定義一個睡覺方法
9 public void sleep() {
10 System.out.println("睡覺");
11 }
12
13 // 定義一個學習方法
14 public void study() {
15 // 方法中可以加上屬性
16 System.out.println(name + "學習");

17 }
18
19 public static void main(String[] args) {
20
21 // 創建一個Person類的對象p1
22 Person p1 = new Person();
23
24 // 通過 對象.屬性 來給屬性賦值
25 p1.name = "Kangkang";
26 p1.age = 18;
27 System.out.println(p1.name);
28
29 //通過對象.方法來調用方法
30 p1.sleep();
31
32 //再創建一個對象p2
33 Person p2 = new Person();
34 //給屬性賦值
35 p2.name ="特朗普";
36 p2.age = 3;
37
      //p2調用study方法
38 p2.study();
      //p1調用study方法
39 p1.study();
40
41 }
42
43 }
  執行結果:
      Kangkang
      睡覺
      特朗普學習
      Kangkang學習
/<code>

study()方法的打印語句中我們加了一個屬性name p2調用時打印的是p2的name屬性 特朗普+學習,p1調用時打印的是p1的name屬性 Kangkang+學習

所以我們通過對象調用方法時,方法中的屬性就是當前對象的屬性。

最後

多說一句,很多人學Python過程中會遇到各種煩惱問題,沒有人解答容易放棄。小編是一名python開發工程師,這裡有我自己整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、爬蟲、數據分析、數據可視化、機器學習等。想要這些資料的可以關注小編,並在後臺私信小編:“01”即可領取。


分享到:


相關文章: