abstract:
抽象類不能被實例化(new),包含屬性、方法、構造器(此構造器不用來初始化實例,只用來被子類調用,其構造函數是提供給子類創建對象的時候初始化父類的屬性的),故只能被繼承。抽象中用的是繼承extends。可以包含非抽象方法和變量,但是若有子類繼承該抽象類,調用代碼如下:
package com.tt.abstracttest;
//該類為抽象類,定義了成員變量a、抽象方法fun(),非抽象方法fun2(),由于是非抽象的必須帶方法體,否則報錯。會提示你加body
public abstract class Test {int a=2;public abstract void fun();public int fun2() {return 1;}
}
package com.tt.abstracttest;
//該類為子類。
public class Test2 extends Test{ @Overridepublic void fun() {//必須重寫父類的抽象方法// TODO Auto-generated method stub }public static void main(String[] args) { Test2 t=new Test2();//實例化子類對象。其中該類有一個隱含的隱含的無參構造,否則無法創建該對象。父類也有一個無參構造,隱含的。int b=t.a;System.out.println(b); System.out.println(t.fun2());}
}
運行效果如下:
