1-類

H_one發表於2024-04-12

4月10日從19:00點開始搞,搞到了4月11日的02:00,啥也沒搞成,就寫了一篇番外篇的物件導向的部落格,tmd。

我真的服了phil這個課程結構了,基礎階段就教 Java語言原理物件導向類的載入過程

我也是直到現在才發現,他的教學影片裡面,只要是感覺他的語氣是在讀話,而不是在講話,就可以不用看了,直接看教學文件即可。全是概念性的東西,說白了就是面試題,要我說這就是不是初學階段搞的東西。

4月10日晚上我就說我搞不懂 類的載入過程 這一小節,之前的Java語言原理也是這樣,Java語言原理那塊我直接跳讀了,但是4月10日在物件導向這裡,由於我意識到物件導向的重要性,就沒敢跳讀。

但是我今天還研究了一會,我發現這個東西他媽的完全就是面試題,根本不在初學階段這個範圍內(至少我當前是這麼認為的)。我現在越來越感覺我被phil坑了,白白浪費了3000塊錢。

4月10日還讓我寫了一篇關於物件導向番外篇的學習的部落格,現在我弄明白我聽不懂的原因了。這個番外篇學習的安排,實行還是不實行?倒把我搞的有點不知所措了。

從4月1日開始,本來想著4月8日基礎語法完結,基礎語法完結以後,4月22日物件導向完結。現在白白把4月9日、4月10日這兩天浪費了,把今天4月11日算上都三天了。

但是我想了想,為了自己更紮實的程式設計基礎,番外篇學習的安排還是實行吧!給物件導向階段再加上個7天,4月29日完結物件導向。

唉,現在這樣加7天,所有的時間都得往後推7天,最終的海投日期得從8月26日改在9月1日了。

本來打算

以下是ChatGPT3.5的解答:

1.1 類的概述

說了這麼多一波三折,開始進入正題吧。有的同學肯定心中會疑惑,明明要學的是物件導向,為什麼會是類的概述呢?

因為物件導向講的就是面向類的物件,所以要讓同學們的腦海裡有一個關於物件導向的大致模型。

類就是對現實中某一類抽象事物的總稱。

比如說人類,你有沒有見過《人類》這個東西?你肯定會說人多的去了,但是你見到的都是人,而不是人類。

所以人類是一個不存在的抽象概念,類就是對這種抽象概念的總稱。

1.2 子類

還有一種類叫做子類,子類咱們顧名思義想下,說白了就是被當作“兒子”的類。

就拿剛才的例子來說,人類裡面也分為很多種類,人類這個父類下,有勤快人類和懶惰人類,而這個勤快人類和懶惰人類,就是人類父類的子類。

子類可以繼承父類的屬性和方法。屬性就是人類的特徵(幾個眼睛,幾個耳朵),方法就是人類的行為(把幾個眼睛,幾個耳朵例項化後在方法中體驗出來)。

1.3 類的寫法

首先咱們得在編輯器裡面建立一個類

這裡已經可以看到Human類已經建立好了

1、public是修飾符,就是說這個類是可以公開訪問的,就是說在別的類中也可以訪問這個Human類。class是關鍵字。Human就是自定義名稱的類(就是你自己建立的那個)。

2、public表示可以公開訪問,String是字串型別,name字串型別的變數名。

3、public公開訪問,void是無返回值,自定義命名的方法

4、方法裡面要執行的程式碼塊

1 public class Human {
2     public String name;  //屬性(欄位)(成員變數)
3     public void Say() {  //方法
4         System.out.println("我叫" + name);
5     }
6 }

1.4 例項化

關於類的大概框架剛才已經建立好了,就是說關於人類的大致框架已經有了,但是人類的具體特徵行為還沒有還沒有體現踹,這裡就要用到例項化了。

例項化就是將抽象事物的這個類,帶到現實中來,讓它變成具體的物件。

在物件導向當中,面向的這個物件就是類的物件,物件也叫例項。

3、下面第3行的程式碼和“int a = 1;”很像,Human就是int,h1就是a。為了保證Human型別的變數唯一性,h1只能出現一個,就像已經有了“int a = 1;”,不能再有第二個“int a = 2;”.newHuman就是new出某一個類的物件。將Human這個類帶到現實中來了。h1就是把Human類的內容都儲存到了h1中。

4、Human類中有一個String的變數name儲存在了h1這個變數裡面,現在想要給人類這個屬性來一個具體的名字,就可以直接在這裡命名了。

5、呼叫Human類儲存在h1中的Say()方法

1 public class firstClass {
2     public static void main(String[] args) {
3         Human h1 = new Human();
4         h1.name = "Bill";
5         h1.Say();
6     }
7 }

1.5 匿名呼叫

只能用一次就會被銷燬,銷燬之後在其他地方也呼叫不了。

“new Human()”建立新例項,雖然沒有變數名,但它依然是一個具體的物件。

“.”可以訪問Human類中的所有的屬性和方法。

“Say()”呼叫Say方法。

1 public class firstClass {
2     public static void main(String[] args) {
3         new Human().Say();
4     }
5 }

1.6 類的作用

類的作用主要是用來分門別類,比如你的要寫一張職員調查便和一張學生調查表,這兩張表的內容肯定是不一樣的,但他們都是由欄位組成的。

1 public class Human {
2     public String name;   //欄位(也稱屬性),成員變數
3     public void Say() {   //方法
4         String one = "AAA";  //區域性變數
5         System.out.println("我叫" + name);
6     }
7 }

1.7 類的注意事項

1、一個類中只能有一個public類

2、類名必須和檔名相同

3、如果建立一個class類,但是沒寫public,Java會預設為public

4、類的程式碼執行順序,package——>import——>class

1.8 類之間的關係

IS-A:耦合度較高,類似於生物鏈的關係,一個沒了全都沒了。

HAS-A:整體性的存在,生命週期是一樣長的,比如說電腦是由顯示卡記憶體CPU組成的,整個電腦沒了就全都沒了。

USE-A:推薦的方式,耦合度較低,分模組執行,生命週期不一樣,一個沒了其他照樣可以執行。

1.9 記憶體的構成(未掌握)

1.10 列舉

開發一個系統之後,各式各樣的使用者都有,到時候使用者輸入的大小寫不一樣、格式不一樣等。為了固定使用者的輸入格式,從而使用列舉。

1 public class firstClass {
2     public static void main(String[] args) {
3         System.out.println(ABCD.G);
4     }
5 }
6 
7 enum ABCD{
8     A,B,C,D,E,F,G;
9 }

1.11 類的載入過程(未掌握)

相關文章