zoukankan      html  css  js  c++  java
  • Java8 改进的匿名内部类:

    1、匿名内部类适合创建那种只需要一次使用的类

    2、匿名内部类定义格式:

    new 实现接口() | 父类构造器(实参列表){
     //匿名内部类类体部分      
    }
    

     3、从上面定义格式可以看出,匿名内部类必须实现一个接口,或继承一个父类,并且只可以实现一个接口,或实现一个父类

    4、匿名内部类不能定义为抽象类,因为定义匿名内部类时,会立即创建匿名内部类的对象,因此不能定义为抽象类

    5、匿名内部类不能定义构造器,因为匿名内部类没有类名,所以无法定义构造器,但可以定义初始化块,可以通过实例初始化,来完成构造器需要完成的事情

    6、最常用的创建匿名内部类方式是:需要创建某个接口类型的对象

    代码1:用实现类实现

    //-定义一个接口
    interface Product{
    	public double getPrice();
    	public String getName();
    }
    
    //-实现接口
    class AnonymouseProduct implements Product{
    	public double getPrice(){
    		return 20.5;
    	}
    	
    	public String getName(){
    		return "游戏机";
    	}
    }
    
    public class AnonymouseTest{
    	//-与接口耦合
    	public void test(Product p){
    		System.out.println("张三买了一个"+p.getName()+",消费了"+p.getPrice()+"美元!");
    	}
    	
    	public static void main(String[] args){
    		//-多态方式创建实现类实例
    		new AnonymouseTest().test(new AnonymouseProduct());
    	}
    }
    

     运行结果:

    代码2:用匿名类实现

    //-定义接口
    interface Product{
    	public double getPrice();
    	public String getName();
    }
    
    public class AnonymouseTest{
    	//-与接口耦合
    	public void test(Product p){
    		System.out.println("张三买了一个"+p.getName()+",消费了"+p.getPrice()+"美元!");
    	}
    
    	public static void main(String[] args){
    		AnonymouseTest at=new AnonymouseTest();
    		//-通过匿名类实现接口
    		at.test(new Product(){
    			public double getPrice(){
    				return 20.5;
    			}
    	
    			public String getName(){
    				return "游戏机";
    			}
    		});
    	}
    }
    

     运行效果:

    代码3:用匿名类实现

    继承父类来创建匿名内部类

  • 相关阅读:
    转-- js(jQuery)获取时间的方法及常用时间类
    jquery 选择器(name,属性,元素)大全
    CSS中LI圆点样式li {list-style-type:符号名称}
    [华为oj]称砝码
    c++中的字符串与数字相互转换
    [华为]DP合唱队形
    [hihoCoder#1032]最长回文子串
    [STL系列]仿函数
    [字符串]寻找一个字符串中最大的公共子串
    [STL系列]STL容器性能比较列表
  • 原文地址:https://www.cnblogs.com/baby-zhude/p/8321617.html
Copyright © 2011-2022 走看看