public class Inner{
public static void main(String[] args){
Xiao x = new Xiao();
x.study();
x.start().play();
//参数是匿名类的实例对象
x.sport(new Car(){
public void run(){
System.out.println("能跑");
}
});
//上面的方法分步详解:
class Xcar implements Car{
public void run(){
System.out.println("匿名类方法run");
}
}
Xcar xc = new Xcar();
x.sport(xc);
//x.eat() 返回的是匿名类的实例对象 所以有eating方法
String str = x.eat().eating();
System.out.println(str);
//实现泛型接口
class Xdog implements Dog<String>{
public String begin(String s){
System.out.println("泛型接口"+s);
return s;
}
}
Xdog xd = new Xdog();//实例化
x.doing(xd);
//匿名泛型类
Chicken<String> c = new Chicken<String>(){
public String fly(String s){
System.out.println("flying"+s);
return s;
}
};
System.out.println(c);
x.going(c);
}
}
class Person{
public void study(){
System.out.println("我会学习");
}
}
class Computer{
public void play(){
System.out.println("我会玩电脑");
}
}
interface Car{
void run();
}
abstract class Cat{
abstract String eating();
}
interface Dog<T>{
T begin(String s);
}
interface Chicken<T>{
T fly(String s);
}
class Xiao extends Person{// 外部类继承Person 肯定会有Person 的方法
public class Lei extends Computer{ //内部类继承 Computer Lei 的实例对象 肯定有Computer的方法
}
public Lei start(){
return new Lei();//返回对象实例
}
public void sport(Car c){//参数是接口的实例
c.run();
}
public Cat eat(){
return new Cat(){//匿名内部类 return 的就是匿名内部类的实例 所以实例的地址 可以调用实例的eating方法
private String str = "小鱼";
public String eating(){
System.out.println("猫吃鱼");
return str;
};
};
}
public void doing(Dog<String> d){
System.out.println(d.begin("thanking"));
}
public <H> void going(Chicken<H> c){// void 前面需要加上<H> <>内的字母不限 方法泛型 局部声明的
System.out.println(c.fly("小鸡快跑。。。"));
}
}
运行结果如下: