類和對象 類:類是對對象的抽象,也就是說類是同一類對象的總稱,這些對象具有相同的屬性和方法。 對象:對象就是一個具體的事物,Java作為面向對象的語言,可以說在Java中萬事萬物皆對象。對象本身具有自己的屬性和方法。 舉個生活中的例子:我們生活中常見的人、手機、電腦、車、鳥等等就可以認為是類,然後每 ...
類和對象
類:類是對對象的抽象,也就是說類是同一類對象的總稱,這些對象具有相同的屬性和方法。
對象:對象就是一個具體的事物,Java作為面向對象的語言,可以說在Java中萬事萬物皆對象。對象本身具有自己的屬性和方法。
舉個生活中的例子:我們生活中常見的人、手機、電腦、車、鳥等等就可以認為是類,然後每一個不同的人就是人這個類的對象,小米6,蘋果7就是手機類的不同對象。
知道了什麼是類,那麼類裡面有什麼呢?
先來看一下類的定義方法:
public class 類名{
訪問修飾符 類型名 屬性名 ;
//構造方法
訪問修飾符 構造方法名([數據類型 參數名]){
}
//普通方法
訪問修飾符 返回值類型 方法名(數據類型 參數名.......){
}
}
可以看到類是由屬性(可以是變數也可以是常量)和方法組成;
類裡面的方法可以分為構造方法和其他方法方法。
Java中的方法的類型有以下幾種:普通方法、構造方法、靜態方法(static修飾)、最終方法(fianl修飾)
構造方法
我們實例化一個對象時,通常使用的方式是這樣的:類名 對象名=new 類名();
當然這裡說這是類名其實並不是很準確,更準確的說這裡new後面的應該是構造方法名。構造方法是一種特殊的方法,這種方法會在每次實例化對象的時候調用。
構造方法的定義是這樣的:public 類名(參數類型 參數名......){ }
這裡的構造方法需要註意的幾個地方是:
1.如果類裡面沒有定義構造方法,我們一樣可以新建對象,這種情況下JVM會為每個類提供一個預設的無參的構造的方法。這點要證明也很容易,在類裡面在不寫任何的構造方法是可以正常的實例化對象的,如果寫了無參的構造方法JVM也不會報錯。
2.如果自己在類裡面定義了一個有參的構造方法,那麼JVM就不會再為類提供預設的無參構造器了。這點可以自己在一個類中定義一個有參的構造方法,然後在實例化得時候調用無參的構造方法,這時可以看到JVM會報錯。
3.構造方法的方法名必須和類名的相一致,而且構造方法是沒有返回值類型的。
構造方法的作用:
1.實例化對象(new關鍵字只是在記憶體中開闢了一個空間,而構造方法則把類的屬性和方法寫入到堆記憶體中,然後返回這段記憶體的首地址)
2.給屬性賦初始值
方法的重載
1.方法重載的條件:必須在同類或者是有繼承關係的類中;方法重載時方法的方法名必須完全相同,然後方法的參數必須不同,返回值的類型可以相同也可以不同。
2.什麼情況下需要用方法的重載呢?
普通方法的重載:可以想象生活中的這樣的例子,比如學習或者工作累我們有放鬆的方法,但是每個人的放鬆的方法都不一樣,比如:放鬆(旅游);放鬆(玩游戲);放鬆(睡覺)。
構造方法的重載:比如要生產兩種手機,一種是鍵盤機,一種是觸屏機,那麼在新建對象的時候就可以調用不同的構造方法來實例化這兩個不同的對象。
3.重載方法的調用:根據方法的參數來確定,參數不同就調用不同的方法。
這裡有一個需要註意的地方就是重載和重寫:
重載:在相同類或者有繼承關係的類中,方法的方法名相同,參數不同,用於處理不同類型的數據。
重寫(覆寫,覆蓋):在有繼承關係的類中,方法的方法名,參數,返回值都必須和被覆寫的方法一致。這時候新的方法就會覆蓋繼承的方法,所以叫方法的重寫或者覆寫。方法的重寫主要是用以實現和父類不一樣的功能。
this關鍵字
1、this關鍵字的用途:
在構造方法中,如果構造方法的參數名和類的屬性名一致時,使用this關鍵字表示當前類的屬性。如果不使用this關鍵字的話,Java會根據就進原則來給變數賦值,也就是把參數賦值給了參數,不會對類的屬性產生任何的影響。
this還可以調用當前類的方法,如調用構造方法:this(參數列表),調用普通方法:this.方法名(參數列表);
2、this關鍵字的表示的是誰?
this關鍵字表示的當前的對象,當前正在調用方法的對象,就是thsi關鍵字表示的對象。
Person p1=new Person();
this.tell();//就是表示p1這個對象調用tell方法。
Person p2=new Person();
this.tell();//這時候表示的就是p2這個對象。