面向對象的程序設計中,類能夠看做是咱們自定義的數據類型,那麼,如何能更加優美,更加高效地定義它就顯得尤其重要。
類中的成員有不少,每一部分都是十分關鍵的,畢竟「面向對象」在Java學習中真的很重要,許許多多的Java開發者定義出來的類等待着咱們去使用,加油!攻克它!java
直接上代碼:數組
package com.my.pac02; /** * @author Summerday * @date 2019/11/26 21:40 */ //類名和文件名一致,且包含main方法 public class CatTest{ //程序入口 public static void main(String[] args) { //建立對象 Cat cat = new Cat(); //爲對象的屬性賦值 cat.name = "sink"; cat.isMale = true; //經過對象調用方法 cat.sleep(); cat.jump(); cat.laughAt("Susan"); System.out.println(cat.isNotMale()); //打印引用變量的值 System.out.println(cat); //建立一個新的引用變量並指向原先的對象 Cat otherCat = cat; System.out.println(otherCat); System.out.println(otherCat.name);//"sink" //將cat和實際對象之間的引用消除 cat = null; } } //定義一個Cat類 class Cat{ //構造方法 Cat() { System.out.println("cat is cute."); } //成員變量 String name; int age; boolean isMale; String color = "Blue"; //方法 void sleep(){ System.out.println(name+"is sleeping---"); } public void jump() { System.out.println(name+"is jumping---"); } public void laughAt(String otherName) { System.out.println(name+"is laughing at "+otherName); } //返回boolean類型的方法 boolean isNotMale() { return !isMale; } }
[修飾符] class 類名 { (零個到多個)構造器... (零個到多個)成員變量(屬性)... (零個到多個)方法... }
[修飾符] 類型 成員變量名 [=默認值]; //例如 boolean isMale; String color = "Blue";
[修飾符] 返回值類型 方法名(形參列表) { 零條到多條可執行語句組成的方法體... } //例如 void sleep(){ System.out.println(name+"is sleeping---"); } public void jump() { System.out.println(name+"is jumping---"); } public void laughAt(String otherName) { System.out.println(name+"is laughing at "+otherName); } //返回boolean類型的方法 boolean isNotMale() { return !isMale; }
[修飾符] 構造器名 (形參列表) { (零條到多條可執行語句組成的構造器執行體... } //例如 //構造方法 Cat() { System.out.println("cat is cute."); }
設計類時的具體細節,接下來將會一一展開,還有未涉及到的內部類和代碼塊部分,以後將會進行學習,暫且從這三個部分展開探究。學習
經過類構造屬於該類對象的過程就叫作類的實例化。對象是具體存在的事物,也稱做實例,能夠調用類中定義的實例變量以及方法。(不考慮static修飾變量的狀況下)設計
//使用Cat類建立了Cat類型的對象 //並調用Cat類的構造器,返回Cat的實例,賦值給變量cat Cat cat = new Cat(); //訪問cat的實例變量name和isMale,併爲他們賦值 cat.name = "sink"; cat.isMale = true; //調用cat的方法 cat.sleep(); cat.jump(); cat.laughAt("Susan"); //輸出isNotMale()方法的返回值 System.out.println(cat.isNotMale());
類型 實例名 = new 類型(參數列表);
例如:Cat cat = new Cat();
類.類變量或類.方法
或實例.實例變量或實例.方法
,類變量涉及static關鍵字,也是暫且放一邊,以後繼續回顧。類是一種引用數據類型:也就是說,在棧內存裏的引用變量並非真正存儲對象的成員變量,而是它的引用,實際的成員變量藏在堆內存中,這一點相似於前面提到過的數組類型。並且,能夠知道,棧內存中存儲的是實際對象在堆內存中的地址值,能夠直接打印引用變量cat的值驗證。code
//建立對象,並初始化 Cat cat = new Cat();
//訪問實例變量 cat.name = "sink"; cat.isMale = true;
Java不容許直接訪問堆內存中的對象,只能經過該對象的引用操做該對象。htm
另外,堆內存中的同一個對象能夠由棧內存中多個引用變量所指向。例如:對象
//把引用變量cat賦值給另外一個引用變量otherCat Cat otherCat = cat;
這時,cat和otherCat都在棧內存中被建立,且他們都指向了原先cat所指向的那塊堆內存,因此他們操做的是同一個實際對象。blog
堆內存的對象沒有任何變量指向時,就會在一段時間內做爲「垃圾」被Java的垃圾回收機制回收,釋放對象所佔用的內存區。
因此想讓他提早釋放,直接給引用變量賦值爲null。內存
參考書籍:《瘋狂Java講義》