Java 面向對象
面向對象的三大特征
- 封裝 (Encapsulation)
- 繼承 (Inheritance)
- 多態 (Polymorphism)
類的訪問機制:
- 在一個類中的訪問機制:類中的方法可以直接訪問類中的成員變量。(例外:static方法訪問非static,編譯不通過。)
- 在不同類中的訪問機制:先創建要訪問類的對象,再用對象訪問類中定義的成員。
匿名對象:
我們也可以不定義對象的句柄,而直接調用這個對象的方法。這樣的對象叫做匿名對象。
如:new Person().shout();
使用情況:
如果對一個對象只需要進行一次方法調用,那么就可以使用匿名對象。
我們經常將匿名對象作為實參傳遞給一個方法調用。
方法的重載(overload)
重載的概念 |
---|
在同一個類中,允許存在一個以上的同名方法,只要它們的參數個數或者參數類型不同即可。 |
重載的特點: |
與返回值類型無關,只看參數列表,且參數列表必須不同。(參數個數或參數類型)。調用時,根據方法參數列表的不同來區別。 |
重載示例: |
//返回兩個整數的和 int add(int x,int y){return x+y;} //返回三個整數的和 int add(int x,int y,int z){return x+y+z;} //返回兩個小數的和 double add(double x,double y){return x+y;} |
public class PrintStream{
public static void print(int i) {……}
public static void print(float f) {……}
private static void print(String s) {……}public static void main(String[] args){ print(3);print(1.2f);print(“hello!”);}
}
//下面采用數組形參來定義方法
public static void test(inta ,String[] books);
//以可變個數形參來定義方法
public static void test(inta ,String…books);
說明:
1.可變參數:方法參數部分指定類型的參數個數是可變多個
2.聲明方式:方法名(參數的類型名…參數名)
3.可變參數方法的使用與方法參數部分使用數組是一致的
4.方法的參數部分有可變形參,需要放在形參聲明的最后
構造方法(構造器)的特征
- 它具有與類相同的名稱
- 它不聲明返回值類型。(與聲明為void不同)
- 不能被static、final、synchronized、abstract、native修飾,不能有return語句返回值
- 根據參數不同,構造器可以分為如下兩類:
- 隱式無參構造器(系統默認提供)
- 顯式定義一個或多個構造器(無參、有參)
- l注 意:
- Java語言中,每個類都至少有一個構造器
- 默認構造器的修飾符與所屬類的修飾符一致
- 一旦顯式定義了構造器,則系統不再提供默認構造器
- 一個類可以創建多個重載的構造器
- 父類的構造器不可被子類繼承
this–關鍵字
在java中,this關鍵字比較難理解,它的作用和其詞義很接近。
它在方法內部使用,即這個方法所屬對象的引用;
它在構造器內部使用,表示該構造器正在初始化的對象。
- this表示當前對象,可以調用類的屬性、方法和構造器
- 什么時候使用this關鍵字呢?
- 當在方法內需要用到調用該方法的對象時,就用this。
class Person{ // 定義Person類private String name ; private int age ; public Person(String name,int age){ this.name = name ; this.age = age ; }public void getInfo(){ System.out.println("姓名:" + name) ;this.speak();}public void speak(){System.out.println(“年齡:” + this.age); }
}
注意:
1.使用this()必須放在構造器的首行!
2.使用this調用本類中其他的構造器,保證至少有一個構造器是不用this的。
JavaBean
1.JavaBean是一種Java語言寫成的可重用組件。
2.所謂javaBean,是指符合如下標準的Java類:
- 類是公共的
- 有一個無參的公共的構造器
- 有屬性,且有對應的get、set方法
3.用戶可以使用JavaBean將功能、處理、值、數據庫訪問和其他任何可以用java代碼創造的對象進行打包,并且其他的開發者可以通過內部的JSP頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。用戶可以認為JavaBean提供了一種隨時隨地的復制和粘貼的功能,而不用關心任何改變。
public class TestJavaBean{private String name; //屬性一般定義為privateprivate int age;public TestJavaBean(){}public int getAge(){return age;}public void setAge(int age){this.age = age;}public String getName(){return name;}public void setName(String name){this.name = name;
}
JDK主要的包介紹
1.java.lang—-包含一些Java語言的核心類,如String、Math、Integer、System和Thread,提供常用功能。
java.net—-包含執行與網絡相關的操作的類和接口。
java.io —-包含能提供多種輸入/輸出功能的類。
java.util—-包含一些實用工具類,如定義系統特性、接口的集合框架類、使用與日期日歷相關的函數。
java.text—-包含了一些java格式化相關的類
java.sql—-包含了java進行JDBC數據庫編程的相關類/接口
java.awt—-包含了構成抽象窗口工具集(abstractwindow toolkits)的多個類,這些類被用來構建和管理應用程序的圖形用戶界面(GUI)。
java.applet—-包含applet運行所需的一些類。