匿名内部类:可以让不能创建对象的 接口和抽象父类 创建对象 (这里的对象不是真的对象),然后重写方法,这样可以实现不被类继承或实现,就可以调用该方法(原来被继承重写的方法);
对象回调:(把创建的对象作为传参,进行go()方法,然后该对象作为方法的形参调用该对象的方法new Swimming)
还有一种情况就是:匿名内部类作为方法的入参形式 例如 : go(new Swimming()_
这里相当于将前面的go(s1) 直接替换成new Swimming() 
package com.itheima.d8_innerclass_anonymous;/*** 目标:掌握匿名内部类的使用形式(语法)*/public class Test2 {public static void main(String[] args) {// // Swimming接口类相当于 父类// Swimming s = new Student(); // 这是一种多态的写法// go(s); // 多态 送的是Student类的对象 不过可以用自己的接口类(父类)接收//这里可以用匿名类来写Swimming s = new Swimming() { // 接口不能创建对象,这是定义的匿名内部类@Overridepublic void swim() {System.out.println("学生游泳");}};go(s);Swimming s1 = new Swimming() {@Overridepublic void swim() {System.out.println("老师过来比赛");}};go(s1);System.out.println("-------------------");/*** 还有一种情况就是:匿名内部类作为方法的入参形式 例如 : go(new Swimming()_*/go(new Swimming() { // 这里相当于将前面的go(s1) 直接替换成new Swimming() 前提Swimming s1 = new Swimming@Overridepublic void swim() {System.out.println("运动员跑的快");}});}/*** 学生 老师 运动员可以一起参加游泳比赛*/public static void go(Swimming s){// 该方法接收的是接口类对象(接口充当一种父类,所有子类都可以进来(用多态)System.out.println("开始:");s.swim(); // 调用他的游泳功能System.out.println("结束。。。。");}}//class Student implements Swimming{ // 创建Student实现类,实现接口//// @Override// public void swim() {// System.out.println("学生快乐的自由游泳");// }//}// 创建一个接口实现某种功能interface Swimming{void swim(); // 默认抽象方法}
