Java學習第六節之J2SE面向對象
一、 面向對象與面向過程之區別與聯繫:
說明:C、C++、C#均是由微軟出產的系列產品;而java則是sun公司基於C++設計的一個編程語言。
二、 相關基本概念
1、對象:是由特徵和行爲構成。特徵即是對象本身的屬性描述,用變量記錄;行爲即是對象的功能,通過方法實現。
2、類(類名首字母要大寫)
(1) 類的聲明:可聲明屬性、方法、類、靜態塊、構造器等。
(2) 格式: [特殊符號]類型名稱;(new類();)
(3) 訪問時通過( . )點來實現。
(用類名可以訪問的變量是靜態變量)
①聲明靜態變量:權限修飾符 static數據類型變量名;如private static intnum=100;
(在整個程序運行中,靜態變量最早被加載,而且只加載一次,載入內存,永遠存在)
②聲明靜態常量:權限修飾符 static final數據類型常量名=常量值;
如 publicstatic final double PI=3.14;
實例變量即是對象,靜態變量即是在數據類型前加static。實例變量可以訪問靜態變量,而靜態變量不可以訪問實例變量。類只有一個對象。
3、構造器,即構造方法、構造函數,也是指對象的初始化方法。
Java構造器不是函數,所以它不能被繼承,這是我們在寫extends的時候寫子類的構造器比較常見,即使子類與父類的構造器參數完全一樣,我們也要寫super就是因爲這個原因。構造器的修飾符比較有限,僅僅只有public、private、 protected這三個使用,其他的例如任何構造器都不能使用,也就是說構造器不允許被成名成對象、同步、靜態等等訪問限制以外的形式訪問。因爲構造器不是函數,所以他是沒有返回值的,但允許有return語句,return語句什麼都不返回,如果你指定了返回值,雖然編譯器不會報出任何錯誤,但是jvm會認爲他是一個與構造器同名的函數罷了,也會導致一些不必要的錯誤。
分爲傳參數的構造器和不傳參的構造器
① 不傳參的構造器,舉例:student s=new student();
②傳參的構造器,舉例:student s=new student(String name,int number);
使用構造器時需要記住:
1、構造器必須與類同名(如果一個源文件中有多個類,那麼構造器必須與公共類同名)
2、每個類都有一個以上的構造器
3、構造器可以有0個、1個或一個以上的參數
4、構造器沒有返回值
5、構造器總是伴隨着new操作一起調用
A1.java構造了兩個函數,一個無參的,一個有參的。
test6.java調用了A1.java中構造的兩個函數。
注意:
1構建一個類的對象時候(new),一定會調用構造方法
2一個類一定有構造方法,如果不明確設置則系統會爲我們提供給一個無參的構造方法,如果明確定義構造方法,則系統就不會爲我們提供構造方法。
3構造方法也支持方法的重載,即一個類中可以有多個構造方法。
4構造方法中一般放一些初始化的操作
5構造方法之間可以互相調用this(必要的參數);注意該語句必須是構造方法的第一條語句。
4、面向對象的構造器(構造器也是一種實例方法),依賴於構造條件,滿足一定的條件纔可以實例化對象,否則不可以。
this是當前的意思,只允許用在實例對象/方法中(需要用對象調)。
this. 表示訪問
this( )轉發構造器,只允許卸載構造器第一行
5、靜態塊
類的構造器,有參數、有初始化方法,叫靜態塊
格式:static{ }
加載類方法:①Class.forName();(main方法聲明的內容後面要加throws Exception)
②直接調用
③new對象
6、常量的聲明
方法一:final String address=””;//final表示只能給所聲明的常量賦一次值
方法二:final String address;
Address=””;
方法三:final static String ADDRESS=”AA”;
當調用常量方法時不加載,當調用非常量方法時可以加載。