package com.qf.demo01;
//1.定义一个接口,抽象类
interface A{
public void test();//抽象方法
public void fun();
}
//2.实现类,实现这个接口
//class A1 implements A{
//
// @Override
// public void test() {
// System.out.println("实现类A1,实现以下接口A中的test()。。。");
// }
//}
public class Test1 {
public static void main(String[] args) {
//3.创建对象
// A a = new A1();
// a.test();
//提示:如果说A1这个实现类只使用一次,也就是说,只创建一次对象。
//匿名类:只要类,不要类名
A a2 = new A(){//new,创建接口的匿名的实现类的对象。
@Override
public void test() {
System.out.println("通过匿名内部类的方法实现来的。。");
}
@Override
public void fun() {
System.out.println("...");
}
}; //=右边干啥呢?创建对象:创建接口A的实现类的对象。
a2.test();
a2.fun();
//=左边不变, 还是声明接口类型的引用
//=右边,new 接口名 () {}
//new-->创建对象
//接口名 -- >创建哪个接口的实现类的对象
//(),
//{},指代接口A的实现类。
//思考题:如果将一个接口作为一个方法的参数,可以直接创建一个匿名内部类的对象作为实参?
// new A(){
//
// @Override
// public void test() {
//
// }
//
// }.test();//创建一个匿名内部类的匿名对象,调用方法。
}
}