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) {
}
}
內部類的分類:
成員內部類:在外部類的成員位置
局部內部類:在外部了的局部位置定義的這個類
在測試類中需要訪問成員內部類中的成員的方法:
外部類名.內部類名 對象名 = 外部類對象.內部類對象;
java08總結
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Java第三週作業(2)
課堂練習4: 編寫代碼模擬手機與SIM卡的組合關係。 要求: SIM卡類負責創建SIM卡; Phone類負責創建手機; 手機可以組合一個SIM卡;
Miss_You123123
2020-06-25 09:43:01
lesson8:集合框架作業2
搬运工、
2020-06-17 09:19:15
lesson7:gui: 編寫一個JFrame窗口
代碼:import java.awt.BorderLayout; import java.awt.FlowLayout; import ja
搬运工、
2020-06-17 09:19:15
lesson 11:使用TCP協議編寫一個網絡程序,設置服務器端的監聽端口是8002,當與客戶端建立連接後,服務器端向客戶端發送數據“Hello, world”,客戶端收到數據後打印輸出。
搬运工、
2020-06-17 09:19:15
作業3:求1+2!+3!+...+20!的和
搬运工、
2020-06-17 09:19:15
作業4: 求一個n階方陣對角線元素之和。
搬运工、
2020-06-17 09:19:15
lesson 6:寫一個方法void triangle(int a,int b,int c),判斷三個參數是否能構成一個三角形。
題目: 寫一個方法void triangle(int a,int b,int c),判斷三個參數是否能構成一個三角形。如果不能則拋出異常Illega
搬运工、
2020-06-17 09:19:15
上課內容及作業。File類的常用方法的使用、遞歸遍歷目錄及其子目錄下的文件、使用delete()方法刪除目錄
qq_45766098
2020-05-21 20:51:56
Java初學者作業——編寫JAVA程序,要求輸入技術部門5位員工的理論成績和實操成績,計算並輸出各位員工的最終評測成績。
明金同学
2020-03-12 10:08:53
Java初學者作業——編寫JAVA程序,在控制檯中輸入六位員工的姓名,通過隨機點名方式,輸出當選組長的員工姓名。
明金同学
2020-03-12 10:08:53
Java初學者作業——爲某超市設計管理系統,需要在控制檯展示系統菜單,菜單之間可以完成跳轉。
明金同学
2020-03-12 10:08:53
Java初學者作業——編寫JAVA程序,在控制檯輸入一位學生的英語考試成績,根據評測規則,輸出對應的成績等級。定義方法實現學生成績的評測功能。
明金同学
2020-03-12 10:08:53
Java初學者作業——定義英雄類(Hero),英雄類中的屬性包括:姓名、攻擊力、防禦力、生命值和魔法值;方法包括:攻擊、介紹。
明金同学
2020-03-06 12:59:12
Java初學者作業——完成對已定義類(Admin)的對象的創建。並完成屬性的賦值和方法的調用。
明金同学
2020-03-06 12:59:12
Java初學者作業——定義管理員類(Admin),管理員類中的屬性包括:姓名、賬號、密碼、電話;方法包括:登錄、顯示自己的信息。
明金同学
2020-03-06 12:59:12
24小時熱門文章
-
使用c#強大的表達式樹實現對象的深克隆之解決循環引用的問題
-
GPT-4o 引領人機交互新風向,向量數據庫賽道沸騰了
-
free AI online tools All In One
-
痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU啓動那些事(12.A)- uSDHC eMMC啓動時間(RT1170)
-
基於Ubuntu-22.04安裝K8s-v1.28.2實驗(二)使用kube-vip實現集羣VIP訪問
-
企業大模型如何成爲自己數據的“百科全書”?
-
本地SSL證書過期 輸入命令在IIS自動生成
-
.NET週刊【5月第2期 2024-05-12】
-
基於Ubuntu-22.04安裝K8s-v1.28.2實驗(一)部署K8s
-
基於Ubuntu-22.04安裝K8s-v1.28.2實驗(三)數據卷掛載NFS(網絡文件系統)