Java 抽象類別與final用法,java抽象final用法
抽象類別:
基於繼承
抽象類別和抽象方法的定義
父類的意義:
把子類共有的屬性,抽取出來,達到代碼的重用
抽象類別不可被執行個體化
使用抽象類別,限制執行個體化(只有衍生類別能執行個體化,父類不能執行個體化)
關鍵字:abstract
每個子類的實現不同
abstract也可用於方法---抽象方法
抽象方法沒有方法體
抽象方法必須在抽象類別裡
抽象方法必須在子類中被實現,除非子類是抽象類別(可以不實現)
(抽象類別沒有方法體)
抽象方法的使用:
1)父類沒有必要執行個體化,採用將父類定義成抽象類別型
2)抽象類別中的方法未必都是抽象方法
抽象方法必須在抽象類別中
3)父類中定義方法,必須由子類實現,每個子類實現的內容不同,採用父類定義抽象方法
4)抽象類別不可以被執行個體化
5)抽象方法必須由子類全部實現
6)抽象方法必須在抽象類別中
子類重寫抽象方法:
必須與父類抽象方法
名字相同
傳回值相同
參數相同
存取權限相同
栗子:
package cn.jbit.epet.inherit2;/** * * @author: 房上的貓 * * @time: 下午3:51:59 * * 部落格地址: https://www.cnblogs.com/lsy131479/ * */public class Pet { private String name = "無名氏";// 暱稱 private int health = 100;// 健康值 private int love = 0;// 親密度 /** * 無參構造方法。 */ public Pet() { this.health = 95; System.out.println("執行寵物的無參構造方法。"); } /** * 有參構造方法。 * @param name 暱稱 */ public Pet(String name) { this.name = name; } public String getName() { return name; } public int getHealth() { return health; } public int getLove() { return love; } /** * 輸出寵物資訊。 */ public void print() { System.out.println("寵物的自白:\n我的名字叫" + this.name + ",我的健康值是" + this.health + ",我和主人的親密程度是" + this.love + "。"); }}父類
package cn.jbit.epet.inherit2;/** * * @author: 房上的貓 * * @time: 下午3:51:59 * * 部落格地址: https://www.cnblogs.com/lsy131479/ * */ /* *狗狗類,寵物的子類。 */public class Dog extends Pet { private String strain;// 品種 /** * 有參構造方法。 * @param name 暱稱 * @param strain 品種 */ public Dog(String name, String strain) { super(name); //此處不能使用this.name=name; this.strain = strain; } public void setStrain(String strain) { this.strain = strain; } public String getStrain() { return strain; } public void print(){ super.print(); System.out.println("我是一隻"+this.getStrain()+"犬。"); }}Dog 類
package cn.jbit.epet.inherit2;/** * * @author: 房上的貓 * * @time: 下午3:51:59 * * 部落格地址: https://www.cnblogs.com/lsy131479/ * */public class Penguin extends Pet { private String sex;// 性別 /** * 有參構造方法。 * @param name 暱稱 * @param sex 性別 */ public Penguin(String name, String sex) { super(name); this.sex = sex; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public void print(){ super.print(); System.out.println("我的性別是"+this.getSex()+"。"); }}Penguin 類
package cn.jbit.epet.inherit2;/** * * @author: 房上的貓 * * @time: 下午3:51:59 * * 部落格地址: https://www.cnblogs.com/lsy131479/ * */ /* * 測試類別,測試類別的繼承。 */public class Test { public static void main(String[] args) { // 1、建立寵物對象pet並輸出資訊 Pet pet = new Pet("貝貝"); //pet.print(); // 2、建立狗狗對象dog並輸出資訊 Dog dog = new Dog("歐歐", "雪娜瑞"); dog.print(); // 3、建立企鵝對象pgn並輸出資訊 Penguin pgn = new Penguin("楠楠", "Q妹"); pgn.print(); }}測試類別
final用法:
final修飾屬性,方法和類
可以修飾類:最終版的類
不希望再被其他類繼承
public finla class text{}
可以修飾方法:
方法不希望被重寫
public class text{ public final void text1(){}}
可以修飾變數:(常量)最終版的屬性值
屬性不希望被修改
public class text{ public final int a;}
總結:
抽象類別和抽象方法:
抽象類別不能被執行個體化‘
可以有0~多個抽象方法
非抽象類別必須重寫父類的所有抽象方法
final修飾符:
修飾的類,不能被繼承
修飾的方法,不能被子類重寫
修飾的變數將編程常量,只能在初始化時進行賦值
(C) 房上的貓 。 著作權所有,並保留一切權利。
https://www.cnblogs.com/lsy131479/
如需轉載,請註明出處!!!