java-接口 Interface(超详细,看了都说好!)

接口的概念

  1. 接口(Interface),在java中是一个抽象类型,是抽象方法的集合,接口一般以关键字Interface来声明。一个类一般通过继承接口的方式,从而来使用接口的抽象方法。
  2. 声明接口的方式与类很相似,但是接口并不是类,它们属于不同的概念。类描述对象的属性和方法,接口则是类要实现的方法的抽象,它相当于一个方法的模板
  3. 除非实现接口的类是抽象类,否则该类要定义接口的所有方法。
  4. 接口不能被实例化,但可以被实现。

接口和类的异同

相同点

  1. 一个接口可以有多个方法。
  2. 接口的文件保存在以接口名命名的 .java 文件中。
  3. 接口相应的字节码文件保存在 .class 文件中。
  4. 接口相应的字节码文件必须在与包名称相匹配的目录结构中。

不同点

  1. 接口不能实例化对象。
  2. 接口没有构造方法。
  3. 接口中的方法必须是抽象方法。
  4. 接口中的属性只能是static 和 final 变量。
  5. 接口不是被类继承了,而是要被类实现。
  6. 接口支持多继承。

接口和抽象类的区别

  1. 抽象类中的方法可以有方法体(描述方法的具体功能),但是接口没有方法体。
  2. 抽象类中的属性可以是各种类型的,而接口中的属性只能是 public static final 类型的。
  3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法)
  4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

接口的特性

  1. 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract 。
  2. 接口中可以有属性,但是接口中的属性会被隐式的指定为 public static final 变量 。
  3. 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法

接口的声明

关键字Interface用来声明一个接口。

修饰符 interface 接口名称 {
    // 属性 必须初始化
    // 抽象方法
}

接口中的属性修饰符被隐式指定为public static final,可省略,但属性必须初始化默认常量
public: 使接口的实现类可以使用该常量;
static:接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态变量。
final:接口中不可以定义变量,即定义的变量前都要加上final修饰,使之成为常量,且必须赋初始值!

代码实例:

public interface Name{
	String Name = "Lingfeng";//修饰符隐式指定为public static final,可省略,但属性必须初始化
	public void SetName();//抽象方法,没有方法体
}

接口的实现

关键字: implements

			1、创建一个类实现接口 
				public  class 类名 implements 接口名{    
			
					2、必须实现接口中所有的抽象方法为实体方法,改分号为大括号 	
								在大括号中定义方法体
				}

代码实例,以实现鼠标监听器接口为例:
鼠标监听器接口:

public interface MouseListener extends EventListener {

   	//在组件上单击(按下并释放)鼠标按钮时调用。
    public void mouseClicked(MouseEvent e);

    //在组件上按下鼠标按钮时调用。
    public void mousePressed(MouseEvent e);

    //在组件上释放鼠标按钮时调用。
    public void mouseReleased(MouseEvent e);

   //当鼠标进入组件时调用。
    public void mouseEntered(MouseEvent e);

   //当鼠标退出组件时调用。
    public void mouseExited(MouseEvent e);
}

G_Listener类中实现鼠标监听器接口:

public class G_Listener implements MouseListener{
	
	//在组件上单击(按下并释放)鼠标按钮时调用。
    public void mouseClicked(MouseEvent e){
    	//方法体
    }
    //在组件上按下鼠标按钮时调用。
    public void mousePressed(MouseEvent e){
    	//方法体
    }
    //在组件上释放鼠标按钮时调用。
    public void mouseReleased(MouseEvent e){
    	//方法体
    }
    //当鼠标进入组件时调用。
    public void mouseEntered(MouseEvent e){
    	//方法体
    }
    //当鼠标退出组件时调用。
    public void mouseExited(MouseEvent e){	
    	//方法体
	}
}

参考资料

https://www.runoob.com/java/java-interfaces.html

博客版权说明

第一条:本博客仅代表作者本人的观点,不保证文章等内容的有效性。
第二条:本博客部分内容或转载或摘录于部分书籍或其他站点,但都会注明作/译者和原出处。如有不妥之处,敬请指出。
第三条:在征得本博客作者同意的情况下,本博客的作品允许非盈利性引用,并请注明出处:“作者:HNU凌风”字样,以尊重作者的劳动成果。版权归原作/译者所有。未经允许,严禁转载。
第四条:对非法转载者,作/译者保留采用法律手段追究的权利。
第五条 本博客之声明以及其修改权、更新权及最终解释权均属HNU凌风
第六条 以上声明的解释权归HNU凌风所有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值