Dro*_*nja 12 java syntax class
在这段代码中,它是创建抽象类或匿名类的对象吗?请告诉我.我在这里有点困惑.
public abstract class AbstractDemo {
abstract void showMessage();
abstract int add(int x,int y);
public int mul(int x,int y){
return x+y;
}
public static void main(String[] args) {
AbstractDemo ad = new AbstractDemo() {
@Override
void showMessage() {
// TODO Auto-generated method stub
}
@Override
int add(int x, int y) {
// TODO Auto-generated method stub
return 0;
}
};
System.out.println(ad.mul(10, 12));
System.out.println(ad.getClass());
}
}
Run Code Online (Sandbox Code Playgroud)
Vin*_*ele 33
您创建一个扩展抽象类的匿名类.
在下面的剪辑中,您正在扩展AbstractDemo并提供其抽象方法的实现.
new AbstractDemo() {
@Override
void showMessage() {
// TODO Auto-generated method stub
}
@Override
int add(int x, int y) {
// TODO Auto-generated method stub
return 0;
}
};
Run Code Online (Sandbox Code Playgroud)
您不能创建抽象类的实例。
您可以创建扩展抽象类的类的实例。
抽象类的全部意义在于它是抽象的——您已经定义了一个接口而不是一个实现。如果没有实现,实例化类不会产生有意义或有用的结果。如果实例化该类的对象确实/有意义,那么您根本不想首先使用抽象类。
您可以将匿名类概念用于如下所示的实例:
AbstractDemo abstractDemo = new AbstractDemo() {
@Override
void showMessage() {
// TODO Auto-generated method stub
}
@Override
int add(int x, int y) {
// TODO Auto-generated method stub
return 0;
}
};
Run Code Online (Sandbox Code Playgroud)
以下是这段简短而无辜的代码中发生的事情:
AbstractDemo ad = new AbstractDemo() {
@Override
void showMessage() {
// TODO Auto-generated method stub
}
@Override
int add(int x, int y) {
// TODO Auto-generated method stub
return 0;
}
};
Run Code Online (Sandbox Code Playgroud)
AbstractDemo类AbstractDemo在这个新类中重写了抽象方法ad变量anonymous classes在这里阅读有关Java的更多信息.
| 归档时间: |
|
| 查看次数: |
29932 次 |
| 最近记录: |