多型、抽象類、介面
阿新 • • 發佈:2018-11-02
多型、抽象類、介面
多型
多型程式碼演示
父類public class Fu {
int i=199;
public Fu() {
System.out.println("我是父類構造方法");
}
public void show(){
System.out.println("我是父類show方法");
}
}
子類
public class Zi extends Fu{ int i=100; public Zi() { //super();預設就有的父類引用,因此會先初始化父類建構函式 System.out.println("我是子類建構函式"); } @Override public void show() { System.out.println("我是子類重寫的show方法"); } public void show1(){ System.out.println("我是子類特有的show1方法"); } }
測試類
public class Text {
public static void main(String[] args) {
Fu f=new Zi();
System.out.println(f.i);//因為在多型時先指向的是父類,因此結果是199,請看下面示意圖
f.show();
//如果不加這一句直接寫f.show1(); 這段程式碼會報錯,因此要想呼叫子類特有成員,就要強制轉化成子類
Zi z=(Zi)f;
z.show1();
}
}
結果
我是父類構造方法 我是子類建構函式 199 我是子類重寫的show方法 我是子類特有的show1方法
以上示意圖
抽象類
抽象類好比就是動物這個概念,動物裡有各種各樣的生物,比如說貓和狗,它們都有共同的動作(如:吃飯、睡覺),但是這些動作表達的方式卻又不同,因此我們運用到了抽象這個概念,把共同的動作寫在抽象類中,通過不同個體(類)對它進行表達(重寫)。抽象類程式碼演示
抽象類public abstract class Abstract { int i=100;//變數 final double f=19.3;//常量 public abstract void show();//抽象方法 public abstract void show1();//抽象方法 //具體方法 public void show3(){ System.out.println("我是抽象類的具體方法"); } }
子類
public class AbstractZi extends Abstract{
//方法重寫
@Override
public void show() {
System.out.println("我是子類的重寫的show方法");
}
@Override
public void show1() {
System.out.println("我是子類重寫的show1方法");
}
}
測試類
public class AbstractText {
public static void main(String[] args) {
AbstractZi z = new AbstractZi();//new物件
z.show();
z.show1();
z.show3();
System.out.println(z.i+"\t"+z.f);
}
}
結果
我是子類的重寫的show方法
我是子類重寫的show1方法
我是抽象類的具體方法
100 19.3
介面
介面就是我們用來擴充套件某項功能的,比如馬戲團的貓和普通貓不同,馬戲團裡的貓會跳火圈、計算等,這只是貓中的一部分會,這個額外的動作就需要我們用介面來定義。介面程式碼演示
介面interface Base {
public static final int k = 0;//只能是公共靜態常量
public abstract void show();//方法宣告(public abstract可以不寫,系統會自動隱式加上)
public abstract void show1();
}
實現類
class Demo implements Base {
@Override
public void show() {
System.out.println("我重寫了show方法");
}
@Override
public void show1() {
System.out.println("我重寫了show1方法");
}
}
測試類
public class Text {
public static void main(String[] args) {
Demo d = new Demo();
d.show();
d.show1();
System.out.println(d.k);
}
}
結果
我重寫了show方法
我重寫了show1方法
0