這很好。實例化抽象類或接口,可能嗎?
package abstracttest;
public abstract class AbstractClass implements NewInter {
public abstract void doStuff();
public void doStuff2() {
System.out.println("in doStuff2");
}
/*
* public static void main(String a[]) { AbstractClass ab = new
* AbstractClass() {
*
* @Override public void doStuff() { // TODO Auto-generated method stub
* System.out.println(" doStuff "); }
*
* @Override public void doInter() { // TODO Auto-generated method stub
*
* } };
*
* ab.doStuff2(); ab.doStuff();
*
* NewInter ni = new NewInter() {
*
* @Override public void doInter() { // TODO Auto-generated method stub
* System.out.println("do Inter"); }
*
* }; ni.doInter();
*
* AbstractClass ab1 = new AbstractClass(); }
*/
}
interface NewInter {
String con = "Hell";
void doInter();
}
class Impl extends AbstractClass {
@Override
public void doInter() {
// TODO Auto-generated method stub
}
@Override
public void doStuff() {
// TODO Auto-generated method stub
}
public static void main(String[] s) {
AbstractClass ab = new AbstractClass() {
@Override
public void doInter() { // TODO Auto-generated method stub
System.out.println("impl doInter");
}
@Override
public void doStuff() { // TODO Auto-generated method stub
System.out.println("impl doStuff");
}
};
ab.doInter();
ab.doStuff();
NewInter ni1 = new NewInter() {
@Override
public void doInter() {
// TODO Auto-generated method stub
}
};
ni1.doInter();
}
}
我能夠從抽象類main()
內,並從class Impl
實例化abstract class
和interface
兩者。
這怎麼可能?
我期待着一個異常,但調用工作正常。
有人可以解釋這種現象嗎?我很困惑。
Java抽象類也不能被實例化,但可以在存在main()時調用。
我在blog中讀到這個。這是什麼意思?
是否有任何其他方式調用抽象類的構造函數?如果有,請告訴我。
有沒有理由試圖做到這一點,或者這純粹是一個學術問題? – 2013-02-20 09:40:24