`

接口 另类的应用和内部接口--内部类

 
阅读更多
接口A:
package com.why;

public interface InterfaceA {
    public void sayA();
}

接口B:
package com.why;

public interface InterfaceB {
    public void sayB();
}

实现A,B
package com.why;

public class ClassA {
    
    
    public static void main(String args[]){
        
        InterfaceA a=new InterfaceA(){

            @Override
            public void sayA() {
                // TODO Auto-generated method stub
                System.out.println("I am a A.");
            }
            
        };
        
        InterfaceB b=new InterfaceB(){
            public void sayB(){
                System.out.println("I am a B.");
            }
        };    
        //must have ; in here.
        
        a.sayA();
        b.sayB();
    } 
}

输出:   I am a A.
        I am a B.


         注意的地方,需要将这个接口类,放进某个方法里。因为它还是一个变量,如果不放进去,就需要变成static(还不太明白为什么,呵呵).还有需要在结尾处放 ; 号。其它就没什么了。

         终结,以我愚见,这样写的好处可以减少无用类的定义。因为这些接口的实现类,只在这个方法中使用一次,没有必要在单独写出一个文件 类。所以就使用这种方式。咋一看还像直接new interface一样,也像新定义了一个inner class一样。呵呵,很有趣啊!看高人写的代码就是不一样啊。

public interface interfaceParent {

	int f1();
	public innerInterface iif=new innerInterface(){

		@Override
		public int f2() {
			// TODO Auto-generated method stub
			return 0;
		}};
	//private f2();接口只能是public和abstact
	public interface innerInterface
	{
		int f2();
	}
}


内部接口......
package newToday;

public class Foo 
{     
	public interface Bar 
	{         
	    void callback();     
	}     
	public static void registerCallback(Bar bar) 
	{}  

// ...elsewhere...  
public static void main(String[]args)
{
     Foo.registerCallback(new Foo.Bar() 
      {      
    	 public void callback() {}  
      });
}
}


再看个接口的应用
public interface interfaceParent {

	int f1(innerInterface iif);
	public innerInterface iif=new innerInterface(){

		@Override
		public int f2() {
			// TODO Auto-generated method stub
			return 0;
		}};
	//private f2();接口只能是public和abstact
	public interface innerInterface
	{
		int f2();
	}
	
}

public class iAbstractClass implements interfaceParent{

	/**
	 * @param args
	 */
	//要实现抽象方法...........
	public static void main(String[] args) {
		// TODO Auto-generated method stub
      new iAbstractClass().f1(new innerInterface(){
//调用接口
		@Override
		public int f2() {
			// TODO Auto-generated method stub
			return 0;
		}});
	}

	@Override
	public int f1(innerInterface iif) {
		// TODO Auto-generated method stub
		return 0;
	}

	

}


内部类和内部接口在  其他的类都不可以访问
除上面的访问方式....
分享到:
评论

相关推荐

    另类模拟按键的应用.e.rar

    下面将详细介绍模拟按键的基本概念、工作原理以及可能的另类应用场景。 1. 模拟按键基本概念: 模拟按键是指通过编程技术模拟人类用户在键盘上按下或释放键的行为。这种技术广泛应用于自动化脚本、游戏挂机、软件...

    金融服务行业智能投研调研报告:人工智能在投研的应用-20190609-中泰证券-23页.pdf

    智能投研产业链包含了数据的获取、处理和应用三个关键环节。 1. 数据获取:数据源多元化,包括传统金融数据(如财务报表、交易数据等)、爬虫抓取的数据(如网络新闻、社交媒体信息等)以及非传统或另类数据(如...

    微机原理与接口技术及实训PPT

    本章会介绍常见的接口芯片,如A/D(模拟/数字)转换器、D/A(数字/模拟)转换器、串行通信接口(如UART)、并行接口(如LPT、IDE、SATA)等,并通过实例分析其工作原理和应用。 9. **第9章** - 外围设备接口 这一...

    设计模式的另类讲法

    标题和描述均提到了“设计模式的另类讲法”,这是一种用生动有趣的方式解析软件工程中常见的设计模式的方法。设计模式是在软件开发过程中为解决特定问题而形成的最佳实践,它们帮助开发者以更有效的方式设计软件架构...

    GSM&CDMA短信猫二次开发接口

    开发者可以利用这些接口来创建自己的应用程序,比如监控系统、自动报警系统或者企业内部通信工具。 描述中提到的“控件支持短信设备类型”包括西门子、爱立信、诺基亚(8310以后)等手机型号,以及标准的工业GSM ...

    [数据抽象和问题求解-C++语言描述]源代码

    类定义了对象的状态(数据成员)和行为(成员函数),使得用户可以关注对象如何使用,而无需关心其内部工作原理。例如,一个名为`Shape`的抽象基类可能包含`area()`和`perimeter()`等方法,但不具体实现,而是由派生...

    Activity之间UI的另类\"更新\"

    4. **静态内部类和广播接收器**:虽然这种方式比较传统,但仍然有效。在一个Activity中创建一个静态内部类,通过BroadcastReceiver来接收消息,然后更新UI。另一个Activity通过发送自定义广播来触发这个过程。 5. *...

    DCS-3950S交换机用户手册

    - M1、M2端口支持多种类型的接口,如1000Base-TX、1000BaseGBIC、100Base-FX单模/多模以及100Base-T以太网接口和专用堆叠接口。 - 具备高度灵活性,可根据实际需求配置不同的端口类型。 - 提供强大的网络管理和...

    vc++ 开发实例源码包

    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 class ...

    《Java2核心技术卷I》配套源码

    源码中会包含接口的实现和内部类的使用。 10. **枚举与注解**:枚举是限定类型的常量集合,注解是元数据,用于提供编译时和运行时的信息。源码会展示它们的用法。 通过研究这些源码,你可以加深对Java语言的理解,...

    vc++ 应用源码包_1

    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...

    大公司JAVA面试试题

    - 掌握构造函数、重载与重写、抽象类和接口的区别与使用场景。 - 理解访问修饰符(public, private, protected, default)的作用和限制。 2. **内存管理与垃圾回收**: - 了解堆和栈内存的区别,以及对象在内存...

    vc++ 应用源码包_2

    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...

    Terminator中断应用程序(5KB)

    3. **源码**:这表示"Terminator"可能提供源代码,让开发者可以查看、学习甚至修改其内部工作原理,这对于教育和定制化需求非常有用。 4. **资源**:可能指的是与该程序相关的文件、文档或者其他辅助资料。 至于...

    vc++ 应用源码包_6

    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...

    vc++ 应用源码包_5

    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...

    vc++ 应用源码包_3

    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...

    protogen for Unity3d

    2. **.proto 文件**:.proto文件是protobuf的数据接口定义文件,包含消息类型、服务定义等。在Unity3D中,它们通常用于定义网络通信协议或者游戏中的数据结构。 3. **protogen**:protogen是protobuf编译器的别名,...

    lussumo Filebrowser v1.3.3 sluke汉化版

    - 对于开发者来说,源码提供了学习和扩展的基础,可以深入了解其内部机制。 4. **另类其它**: - "另类其它"标签可能指的是Filebrowser与其他传统FTP客户端或文件管理系统相比,它提供了一种不同的交互方式和使用...

Global site tag (gtag.js) - Google Analytics