DAY09 復習
1 例外
1. 例外的繼承結構
例外層次結構中的根是Throwable
Error:目前我們編碼解決不了的問題
Exception:例外
編譯例外:未運行代碼就報錯了,強制要求處理
運行時例外:運行代碼才報錯,可以通過編譯,不強制要求處理
Throwable:例外的頂級父類
--Error:錯誤,程式無法處理
--Exception:例外,我們可以通過編碼修復
-- 編譯例外:還沒運行已經報錯了
-- 運行時例外:可以通過編譯,一運行就報錯
2.例外的解決方案
1. 捕獲處理try-catch–自己解決
例外捕獲處理的格式:
try{
可能會拋出例外的代碼
}catch(例外的型別 例外的名字){
萬一捕獲到了例外,進行處理的解決方案
}
- try-catch結構可以嵌套,如果有多種例外型別需要特殊處理的話
- 使用多型的思想,不論是什么子例外,統一看作父型別Exception
做出更加通用的解決方案,甚至可以只寫這一個
2.向上拋出throws–交給別人解決
例外拋出的格式:
在方法的小括號與大括號之間,寫:throws 例外型別
如果有多個例外,使用逗號分隔即可
private static void method3() throws ArithmeticException,InputMismatchException,Exception{ }
private static void method3() throws Exception{ }
- 如果一個方法拋出了例外,那么誰來呼叫這個方法,誰就需要處理這個例外,這里的處理也有兩種方案:捕獲解決 或者 繼續向上拋出
- 不能直接把例外拋給main(),因為呼叫main()是JVM,沒人解決了,該報錯還報錯,所以我們一般會在main()呼叫之前將例外解決掉
3. 抽象
1.抽象類
- 被abstract修飾的方法是抽象方法,抽象方法沒有方法體
- 一旦一個類中有抽象方法,這個類必須被宣告成抽象類
- 如果一個子類繼承了一個抽象父類,有兩種解決方案:
1)抽象子類:不實作/實作一部分抽象父類中的抽象方法
2)普通子類:實作抽象父類中全部的抽象方法 - 抽象類不能實體化
- 抽象類有建構式的,但是不是為了自己使用,為了子類super()呼叫
- 抽象類可以定義成員變數/成員常量
- 抽象類中可以定義全普/全抽/半普半抽
- 如果一個類不想被外界實體化,可以把這個類宣告成抽象類
2 抽象方法
- 被關鍵字abstract 修飾的方法就是抽象方法
- 抽象方法沒有方法體{ },直接以分號結束
4. 練習案例1:
package cn.tedu.exec;
/*本類用于面向物件綜合設計案例*/
public class DesignTeacher {
}
//抽取所有類的共性功能,向上形成父類Teacher
abstract class Teacher{
//既然父類中的方法一定會被子類重寫,那可以把父類中的方法宣告成抽象方法
//抽象父類去制定規則,實際干活的交給子類
public abstract void ready();
public abstract void teach();
}
//1.創建培優CGB老師類
//業務:主打互聯網架構與微服務
class CGBTeacher extends Teacher{
@Override
public void ready() {
System.out.println("正在備課互聯網技術");
}
@Override
public void teach() {
System.out.println("正在講課互聯網技術");
}
}
//2.創建高手加薪班老師類
//主打:基礎加強 框架加強 高新技術
class ACTTeacher extends Teacher{
@Override
public void ready() {
System.out.println("正在備課基礎加強");
}
@Override
public void teach() {
System.out.println("正在授課基礎加強");
}
}
//3.創建一個抽象子類,只實作抽象父類中的一個抽象方法
abstract class SCDTeacher extends Teacher{
@Override
public void ready() {
System.out.println("正在研發中...");
}
}
5 練習案例2:
- 定義父類小鳥類Bird :
腿legNumbers的數量為2
下蛋eggNumbers數量可以自定義
擁有飛行fly()功能 下蛋layEggs()功能
- 定義子級鴿子類Pigeon:
它既會飛,也會下蛋
- 定義子級燕子類Swallow:
它既會飛,也會下蛋,還有自己的特有功能筑巢makeNest()
package cn.tedu.exec;
/*本類用作OOP綜合案例*/
public class TestAnimal {
public static void main(String[] args) {
//11.創建鴿子類物件
Pigeon p = new Pigeon();
System.out.println(p.LEG_NUMBERS);//2
System.out.println(p.eggNumbers);//0,還是父類的默認值
p.layEggs();//鴿子的下蛋數量為:2個
p.fly();//小鳥飛呀飛~
//12.創建燕子類的物件
Swallow s = new Swallow();
System.out.println(s.LEG_NUMBERS);//2
System.out.println(s.eggNumbers);//6
s.fly();//繼承過來的方法
s.layEggs();//實作了的抽象方法
s.makeNest();//自己的特有方法
}
}
//1.定義父類小鳥類
abstract class Bird{
//2.定義小鳥類中的成員常量,腿的數量為2
final int LEG_NUMBERS = 2;
//3.定義小鳥類中的成員變數,下蛋的數量
int eggNumbers;
//4.定義小鳥類中的普通方法
public void fly(){
System.out.println("小鳥飛呀飛~");
}
//5.定義小鳥類中的抽象方法
public abstract void layEggs();
}
//6.創建子類鴿子類
class Pigeon extends Bird{
//7.實作抽象父類中未實作的方法
@Override
public void layEggs() {
System.out.println("鴿子的下蛋數量為:2個");
}
}
//8.創建第2個子類燕子類
class Swallow extends Bird{
//7.1定義子類自己的成員變數
int eggNumbers = 6;
//7.2實作抽象父類中未實作的方法
@Override
public void layEggs() {
System.out.println("燕子的下蛋數量:"+eggNumbers);
}
//8.定義子類特有的方法
public void makeNest(){
System.out.println("燕子筑巢~");
}
}
5 練習案例2:動物設計代碼2
- 定義父類昆蟲類Insect:
腿的數量為6,產卵的數量可以自定義,擁有飛行的功能還有產卵spawn的功能
- 定義子級螞蟻類Ant:
它既會飛,也會產卵
- 定義子級蜜蜂類Bee:
它既會飛,也會產卵,還有自己的特有功能制作蜂蜜makeHoney
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/355382.html
標籤:其他
上一篇:雙十一就該這么薅羊毛,MacBook、iphone13等萬元壕禮等你領
下一篇:網路安全工具有哪些
