您的位置:首页 > 编程语言 > Java开发

java 内部类 匿名内部类 匿名类结合泛型 使用 详细教程 讲解

2018-01-12 20:04 661 查看
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("小鸡快跑。。。"));
}
}

运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: