Java日誌第17天 2020.7.22
阿新 • • 發佈:2020-07-22
Java繼承的三個特徵
1.Java語言是單繼承的,一個類的直接有且僅有一個。
若一個子類有多個父類,當父類有相同方法名時,子類無法正常呼叫。
2.Java語言可以多級繼承。
public class A{}
public class B extends A{}
public class C extends B{}
如B繼承A,C繼承B,A也叫C的父類,只是間接繼承。
*java.lang.Object是最高父類
3.一個子類只能有一個父類,但一個父類可以有多個子類。
抽象
如果父類當中方法不確定方法體的實現,那麼該方法定義為抽象方法。
抽象方法所在的類,定義為抽象類
public abstract class A{ //A為抽象類
public abstract void method();// 抽象方法
}
如何使用抽象類和抽象方法
1.不能直接建立new抽象類物件
2.必須有一個子類繼承父類
3.子類必須覆蓋重寫父類中所有抽象方法
4.建立子類物件使用
抽象類注意事項
1.抽象類不能建立物件,如果建立,編譯無法通過而報錯。
2.抽象類中,可以有構造方法,是供子類建立物件時,初始化父類成員使用的。
3.抽象類中,不一定包含抽象方法,但是有抽象方法的類必定是抽象類。
4.抽象類的子類,必須重寫先後抽象父類中所有抽象方法,否則,編譯無法通過而報錯,除非該子類也是抽象類。
例項:群主發紅包(繼承方法的使用)
定義User類,有姓名和金額等變數
public class User { private String name;//姓名 private int money;//錢包金額 public User(){ } public User(String name, int money) { this.name = name; this.money = money; } //顯示使用者資訊 public void display(){ System.out.println("我是"+name+",餘額"+money+"元"); }public String getName() { return name; } public void setName(String name) { this.name = name; } public int getMoney() { return money; } public void setMoney(int money) { this.money = money; } }
定義群主Manager類,實現發紅包功能
import java.util.ArrayList; public class Manager extends User { public Manager(){ } public Manager(String name,int money){ super(name,money); } public ArrayList<Integer> send(int totalMoney, int count){ //一個集合儲存若干個紅包的金額 ArrayList<Integer> readList = new ArrayList(); //檢查群主餘額 int leftMoney = super.getMoney(); if(totalMoney > leftMoney){ System.out.println("餘額不足"); return readList; } super.setMoney(leftMoney - totalMoney); int avg = totalMoney / count; int mod = totalMoney % count; for (int i = 0; i < count-1; i++) { readList.add(avg); } int last = avg + mod; readList.add(last); return readList; } }
定義成員Member類,實現收紅包功能
import java.util.ArrayList; import java.util.Random; public class Member extends User { public Member(){ } public Member(String name,int money){ super(name,money); } public void receive(ArrayList<Integer> list){ int index = new Random().nextInt(list.size()); int delta = list.remove(index); int money = super.getMoney(); super.setMoney(money + delta); } }
測試類
import java.util.ArrayList; public class Test { public static void main(String[] args) { Manager manager = new Manager("群主",2000); Member member1 = new Member("member1",20); Member member2 = new Member("member2",60); Member member3 = new Member("member3",75); manager.display(); member1.display(); member2.display(); member3.display(); System.out.println("==================="); System.out.println("發紅包了!"); ArrayList<Integer> readList = manager.send(1000,3); member1.receive(readList); member2.receive(readList); member3.receive(readList); manager.display(); member1.display(); member2.display(); member3.display(); } }
結果如下
明天學習介面咯!