java 內部類 匿名內部類 匿名類結合泛型 使用 詳細教程 講解
阿新 • • 發佈:2018-12-26
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("小雞快跑。。。")); } }
執行結果如下: