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 類的載入過程(未掌握)