接口interface

抽象类与普通类相比最大的特点是约定了子类的实现要求

但是抽象类有一个缺点:单继承局限,如果要想约定子类的实现要求以及避免单继承的局限就需要使用接口。在以后的开发设计之中:接口优先。在一个操作即可以使用抽象类又可以使用接口的时候,请优先考虑接口。


接口的基本概念

接口就是一个抽象方法和全局常量的集合,在java中接口可以使用interface关键字来进行定义

范例:定义一个接口

//接口和类的命名要求相同,所以在区分接口建议在接口前面追加I
interface IMessage{
	public static final String MSG="1111111111111";
public abstract void print();//抽象方法
}
public class TestDemo1 {

	public static void main(String[] args) {
	}

}
但是如果 子类要想使用接口,那么就必须利 用implements关键字来实现(实例化 )接口,同时一个子类可以实现多个接口,也就是说可以 利用接口来实现多继承的概念。对于 接口的子类如果不是抽象类)则必须 覆写接口中的全部抽象方法。随后可以利用子类对象的向上转型(A a=new B()) 通过实例化子类来得到接口的实例化对象。 
interface IMessage{
	public static final String MSG="1111111111111";
public abstract void print();//抽象方法
}

interface INews{
	public abstract String get();
}
class   MessageImpl implements IMessage,INews{
		public void print(){
			System.out.println(IMessage.MSG);
		}
		public String get(){
			return IMessage.MSG;//访问常量都建议加上类名称,接口就是特殊的类
			
		}
}
public class TestDemo1 {

	public static void main(String[] args) {
INews m =new MessageImpl();//子类接口为父类实例化
//现在m标傲世的并不是INews,而是MessageImpl
//MessageImpl 是IMessage的子类 所以可以转化
IMessage ms=(IMessage)m;   	
 system.out.println(m.get());}}

范例:观察接口间的转换

当再定义一个子类只与接口INews有关时

class NewImpl implements INews{
	public String get() {
		return null;
	}
}
public class TestDemo2 {


	public static void main(String[] args) {
INews m =new NewImpl();//与IMessage接口无关
IMessage ms=(IMessage)m;   	
 System.out.println(m.get());
 }
	}
ClassCastException: . NewImpl cannot be cast to  IMessage


当一个子类继承了多个接口之后,并且接口对象通过子类继续宁实例化,那么这多个接口之间是允许相互转换的


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值