package date1113;
import java.sql.SQLOutput;
public class InnerClassExercise01 {
public static void main(String[] args){
//当作实参直接传递
f1(new AA() {
@Override
public void cry() {
System.out.println("painting");
}
}); //?????????????????????
f1(new picture());//??????????????????
}
//静态方法,形参为接口类型
public static void f1(AA aa){
aa.cry();
}
}
//这是一个接口
interface AA{
void cry();
}
class picture implements AA{
@Override
public void cry() {
System.out.println("drawing");
}
}
第一个问题:
f1(new AA() {
@Override
public void cry() {
System.out.println("painting");
}
}); //?
这里的f1为什么直接f1(匿名内部类); 为什么括号外直接加“ ; ”?一般方法不是f1(){}吗?
第二个问题:
f1(new picture());//?
这里为什么可以直接传picture? 意思是AA aa = new picture();吗?
如果是这样的话,为什么一个接口可以new一个类出来?
就是说AA和picture不是父子类,难道可以写成AA aa = new picture();吗?
那aa这个实例的编译类型和运行类型又是什么?