zoukankan      html  css  js  c++  java
  • Java接口

    Java接口可以理解为一种特殊的类,是由全局常量公共的抽象方法所组成,定义在接口中的方法默认是public

    接口如果不写public,则也是public访问权限,不是default

    与抽象类一样,接口若要使用也必须通过子类,子类通过implements关键字实现接口。

    一个子类可以同时实现多个接口,摆脱了Java的单继承局限

    //=================================================
    // File Name       :	interface_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    
    // 类名:A
    // 属性:
    // 方法:
    interface A_1{										//定义接口A_1
    	public String AUTHOR = "张三";		//定义全局常量,等价于:public static final String AUTHOR = "张三";	
    	public void print();							//定义抽象方法,等价于:public abstract void print();
    	public String getInfo();					//定义抽象方法,等价于:public abstract String getInfo();
    }
    
    interface B_1{										//定义接口B_1
    	public void say();							//定义抽象方法
    }
    
    class X implements A_1,B_1{				//子类同时实现两个接口
    
    	@Override
    	public void say() {							//覆写B接口中的抽象方法
    		// TODO 自动生成的方法存根
    		System.out.println("Hello World!");
    	}
    
    	@Override
    	public void print() {						//覆写A接口中的抽象方法
    		// TODO 自动生成的方法存根
    		System.out.println("作者:"+AUTHOR);
    	}
    
    	@Override
    	public String getInfo() {					//覆写A接口中的抽象方法
    		// TODO 自动生成的方法存根
    		return "HELLO";
    	}
    	
    }
    
    
    
    
    //主类
    //Function        : 	interface_demo
    public class interface_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		X x = new X();				//实例化子类对象
    		x.say();						//调用被覆写过的方法
    		x.print();						//调用被覆写过的方法
    	}
    
    }
    

    同时实现继承和接口

    //=================================================
    // File Name       :	extends_implements_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    
    // 类名:A_2
    // 属性:
    // 方法:
    interface A_2{										//定义接口A_1
    	public String AUTHOR = "张三";		//定义全局常量
    	public void print();							//定义抽象方法
    	public String getInfo();					//定义抽象方法
    }
    
    //类名:B_2
    //属性:
    //方法:
    abstract class B_2{							//定义一个抽象类
    	public abstract void say();		//定义一个抽象方法
    }
    
    //类名:B_3
    //属性:
    //方法:
    abstract class B_3 implements A_2{			//定义一个抽象类,并实现接口
    	public abstract void say();						//定义一个抽象方法
    }
    
    //类名:X_2
    //属性:
    //方法:
    class X_2 extends B_2 implements A_2{	//同时实现继承和接口
    
    	@Override
    	public String getInfo() {							//覆写A_2接口中的抽象方法
    		// TODO 自动生成的方法存根
    		return "HELLO";
    	}
    
    	@Override
    	public void say() {									//覆写B_2抽象类中的抽象方法
    		// TODO 自动生成的方法存根
    		System.out.println("Hello World!");
    	}				
    
    	@Override
    	public void print() {								//覆写A_2接口中的抽象方法
    		// TODO 自动生成的方法存根
    		System.out.println("作者:"+AUTHOR);
    	}
    }
    
    //类名:X_3
    //属性:
    //方法:
    class X_3 extends B_3{			//继承抽象类,覆写全部的抽象方法
    
    	@Override
    	public void print() {			//覆写B_3抽象类中的抽象方法
    		// TODO 自动生成的方法存根
    		System.out.println("作者:"+AUTHOR);
    	}
    
    	@Override
    	public String getInfo() {		//覆写B_3抽象类中的抽象方法
    		// TODO 自动生成的方法存根
    		return "HELLO";
    	}
    
    	@Override
    	public void say() {				//覆写B_3抽象类中的抽象方法
    		// TODO 自动生成的方法存根
    		System.out.println("Hello World!");
    	}
    	
    }
    
    
    
    public class extends_implements_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		X_2 x = new X_2();				//实例化子类对象
    		x.say();								//调用被覆写过的方法
    		x.print();								//调用被覆写过的方法
    		X_3 x_1 = new X_3();
    		x_1.say();
    		x_1.print();
    	}
    
    }
    

    接口的继承

    //=================================================
    // File Name       :	extends_implements_demo2
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    
    // 类名:C
    // 属性:
    // 方法:
    interface C{												// 定义接口C
    	public String AUTHOR = "张三";			//定义全局常量
    	public void printC();							//定义抽象方法
    }
    
    //类名:D
    //属性:
    //方法:
    interface D{												//定义接口D
    	public void printD();							//定义抽象方法
    }
    
    //类名:E
    //属性:
    //方法:
    interface E extends C,D{						// 定义接口E,同时继承接口C和D
    	public void printE();							//定义抽象方法
    }
    
    //类名:F
    //属性:
    //方法:
    class F implements E{
    
    	@Override
    	public void printC() {
    		// TODO 自动生成的方法存根
    		System.out.println("C--Hello World");
    	}
    
    	@Override
    	public void printD() {
    		// TODO 自动生成的方法存根
    		System.out.println("D--Hello World");
    	}
    
    	@Override
    	public void printE() {
    		// TODO 自动生成的方法存根
    		System.out.println("E--Hello World");
    	}							
    	
    }
    
    //主类
    //Function        : 	extends_implements_demo2
    public class extends_implements_demo2 {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		F f = new F();
    		f.printC();
    		f.printD();
    		f.printE();
    	}
    
    }
    

    接口的实际应用

    接口在实际中更多的作用是用来制订标准,例子USB设备

    //=================================================
    // File Name       :	implements_usb_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    
    // 接口名:USB
    // 属性:
    // 方法:
    interface USB{
    	public void start();
    	public void stop();
    }
    
    //类名:computer
    //属性:
    //方法:
    class computer {
    	public static void plugin(USB usb){
    		usb.start();
    		System.out.println("=====USB 设备工作=====");
    		usb.stop();
    	}
    }
    
    //类名:FLASH
    //属性:
    //方法:
    class FLASH implements USB{
    
    	@Override
    	public void start() {
    		// TODO 自动生成的方法存根
    		System.out.println("U盘开始工作");
    	}
    
    	@Override
    	public void stop() {
    		// TODO 自动生成的方法存根
    		System.out.println("U盘停止工作");
    	}
    	
    }
    
    //类名:Print
    //属性:
    //方法:
    class Print implements USB{
    
    	@Override
    	public void start() {
    		// TODO 自动生成的方法存根
    		System.out.println("打印机开始工作");
    	}
    
    	@Override
    	public void stop() {
    		// TODO 自动生成的方法存根
    		System.out.println("打印机停止工作");
    	}
    	
    }
    
    //主类
    //Function        : 	implements_usb_demo
    public class implements_usb_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		computer.plugin(new FLASH());
    		computer.plugin(new Print());
    	}
    
    }
    
  • 相关阅读:
    Nginx Http模块开发
    nginx模块开发获取post参数
    nginx上传模块nginx_upload_module和nginx_uploadprogress_module模块进度显示,如何传递GET参数等。
    Spring data jpa 复杂动态查询方式总结
    springData Jpa 快速入门
    从一个简单的 JPA 示例开始
    java中使用Protobuf的实例(Demo)
    Protocol Buffers官方文档(开发指南)
    protobuf(Protocol Buffers)java初体验
    [thrift] thrift基本原理及使用
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/5239521.html
Copyright © 2011-2022 走看看