import java.util.Scanner;
public abstract class Test {
int a;
int b;
char c;
public abstract int maopao(int a);
public abstract int maopao();
public abstract int maopao(char c);
public Test(int a, int b, char c) {
this.a = a;
this.b = b;
this.c = c;
}
}
public class Test_1 {
public static void main(String[] args) {
Test t= new Test(2, 4, 'A') {
@Override
public int maopao(int a) {
return a;
}
@Override
public int maopao() {
return b;
}
@Override
public int maopao(char c) {
return c;
}
};
System.out.println(t.maopao(t.a));
System.out.println(t.maopao());
System.out.println(t.maopao(t.c));
}
}
运行结果:
那我这个算怎么回事?
@Override 你看这个注解,这个是当前重写父类的方法,你new Test后面大括号里面的代码就相当于写了一个类继承了Test 类,那三个@Override的方法是对应之类的方法。
说白了创建了一个内部匿名类然后实例化了,抽象类是不能实例化的。
你这也不属于实例化 只是以匿名内部类的形式继承了抽象类 重写了他的全部方法
你这个JDK是什么版本的?抽象类是不能实例化的。