java08總結

A 多態
1)三個前提條件:
a:必須有繼承關係
b:方法重寫
c:必須有父類引用指向子類對象:向上轉型
2)多態中的成員訪問特點:
a:成員變量:編譯看左,運行看左
b:成員方法(非靜態的):編譯看左,運行看右
c:靜態成員方法:編譯看左,運行看左(靜態方法不算方法重寫,和類有關)
3)多態的弊端
不能使用子類的特有功能:
要使用子類的特有功能:
a):創建子類的具體對象(雖然可以,但是從內存角度考慮,不好:耗費空間)
b):向下轉型:將父類的引用強制轉換爲子類的引用
子類名 對象名= (子類名)父類引用 ;


向下轉型經常會出現異常:
ClassCastException
ArrayIndexOutOfBoundsException:數組角標越界異常
NullPointerException:空指針異常(解決方案:給對象做非空判斷)
if(對象名!=null){
給該對象進行操作..
}
B: 抽象類: 
a:概念
 是由於在一個類中存在一個抽象功能,所以必須用abstract去修飾當前的這個類

abstract class Animal{}

抽象類中不一定有抽象方法,如果一個類中有抽象方法,那麼這個類一定是抽象類!
抽象類是不能直接實例化的:不能創建對象
抽象類的子類:具體類
抽象類的實例化:需要通過該抽象類的子類進行數據的初始化!抽象類多態
Animal  a = new Cat() ; 抽象類多態形式
b)抽象類的成員特點

成員變量:可以是自定義常量,也可以是變量
成員方法:可以抽象方法(沒有方法體的方法),也可以是非抽象方法
構造方法:可以有無參構造/也可以有有參構造
學生類:標準類
c)abstract不能和哪些關鍵字共同使用
public或者protected(這兩個 是可以使用的)
static
private
final

C:接口

創建對象:具體類對象(根據具體需求)
   使用抽象類多態(次之)
 使用接口多態(最常用的)
接口的表示方法:interface  接口名{} 接口名和類名的命名規則一樣
接口的子實現類和接口的關係:implements實現
class 子實現類名implements 接口名{}
接口的子實現類:一定是一個具體類;子實現類是抽象類(沒有意義)
接口不能直接實例化--->最終創建接口的對象就是通過子實現類來進行實例化!


接口裏面的代碼越少越好:
登陸();
註冊() ;
接口的子實現類 implements 接口{
登陸(){
//業務邏輯
}
}


測試類
main(){
通過接口多態:
接口名  對象名 =new  子實現類名() ;
}
接口的成員特點:
成員變量:
變量是一個常量:默認修飾符:public static final
成員方法:默認修飾符:public  abstract

    接口中是不能有構造方法的

 1)需要定義一個類工具類:ArrayTool數組工具類:給該類寫上文檔註釋(每一個靜態方法都需要使用文檔註釋)
2)需要將該類的無參私有化,目的是爲了讓外界創建對象
3)ArrayTool中的成員方法全部用static修飾
4)測試完畢
5)如何製作API文檔


針對ArrayTool來製作


 打開dos---->javadoc -d 目標名(文件名) -author -version ArrayTool.java
打開API:
顯示---->輸入你查找的類
索引---->搜索

找到某一個類:
對該類的描述
看類結構:
看該類是否有字段(變量),構造方法(如何創建該類對象),方法(類的成員方法)
出現該類的版本號:
Scanner java.util.Scanner;

JDK5.0以後的新特性:自動拆裝箱(int--->Integer,char--->Character),靜態導入(導入的方法級別),可變參數,增強for循環(集合),枚舉
JDK7.0也有新特性(匿名內部類:局部內部類訪問局部變量特性:局部變量必須被final講)
內部類
 在一個類中定義另一個類,那麼把這種情況:內部類:
舉例:
在類A中定義一個類B,那麼類B就是類A的內部類,同理,類A就是類B的外部類
//外部類
class Outer{
//外部類的成員變量
// public int num = 100 ;
private int num = 20 ;

//內部類
class Inner{
//內部類的成員方法
public void show(){
System.out.println(num);
}
}

//外部類的成員方法
public void method(){
// show() ;
//創建內部類對象
Inner i = new Inner() ;
i.show() ;
}
}


//測試類
public class InnerDemo {
public static void main(String[] args) {

}
}
 內部類的分類:
成員內部類:在外部類的成員位置
局部內部類:在外部了的局部位置定義的這個類
在測試類中需要訪問成員內部類中的成員的方法:
外部類名.內部類名 對象名 = 外部類對象.內部類對象;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章