Java学习笔记----------接口

接口

1.接口的定义
接口相当于是一系列方法的声明,是一些方法特征的集合。可以把接口理解为制定一个公共定义的标准。
接口主要是使用关键字来interface定义,由于与类名称的定义的要求相同,为了区别接口通常在接口名称前面加入一个大写的I。
接口中可以定义抽象方法和全局常量,在JDK1.8之后,也可以定义普通方法和静态方法。定义普通方法的时候,要求追加default声明。

interface IMessage{
	public static final String INFO="www.baidu.com";//全局常量
	public abstract String getInfo();//抽象方法
	public static IMessage getInstance(){
		return new MessageImp();
	}
	public default void eat(){//普通方法
		system.out.println("吃饭");
	}
}

在接口中所有的抽象方法的权限都是public,可以省略不写,在接口中的abstract也可以省略,所以全局变量和抽象方法可以简化如下。

String INFO="www.baidu.com";
String getInfo() ;

2.接口在使用的时候,需要被子类实现,同时一个子类可以实现多个接口。同时如果子类不是抽象类,子类要覆写接口中所有的抽象方法。

interface IMessage{
 	public abstract String getInfo() ;
}
interface IChannel{
 	public abstract boolean Connect();
}
class MessageImp1 implements IMessage,IChannel{
	public String getInfo() {
  		if (this.Connect()) {
   			return "发送得到一个消息";
  		}
  			return "通道创建失败";
 	}
 	public boolean Connect() {
  		System.out.println("消息已经发出,已经连接");
  		return true;
  	}
 }

3.接口对象可以利用子类的向上转型来实现实例化

IMessage mig=new MessageImp1();

4.子类的对象可以实现任意父接口的转换。由于接口不允许继承父类,所有接口一定不是Object的子类,但是由于接口的子类一定是Object的子类,所以接口一定可以通过Object类接收。

Object obj =mig;
IChannel chl=(IChannel) obj;

5.一个接口可以通过extends继承多个接口,这被称为接口的多继承性。如果多个接口中的抽象方法重复。没有影响,如果普通方法重复,需要重写普通方法。

interface MessageImp2 extends IMessage,IChannel{
void fun();
}

6.接口和抽象类
联系:抽象类或者接口必须定义子类,子类一定要覆写抽象类或者接口中的全部抽象方法。通过子类的向上转型实现抽象类或者接口对象实例化。
区别:
1 定义上:抽象类: abstract class 抽象类名称{} 接口: interface 接口名称{}
2 组成上:抽象类中可以有构造方法,普通方法,静态方法,抽象方法,全局常量,普通常量, 而接口中只能有抽象方法,全局常量,普通方法,静态方法。抽象类比接口多构造方法和普通常量。
3 权限上:抽象类可以使用各种权限定义 ,而接口只能使用public定义。
4 子类使用上:抽象类的子类通过extends可以继承一个抽象类,而接口的子类使用implements可以实现多个接口
5 两者关系上 抽象类可以实现若干个接口,而接口不允许继承抽象类,但是允许继承多个父接口

实现接口的可能是抽象类,一个抽象类可以实现多个接口,而一个普通类只能继承一个抽象类并且可以实现多个父接口,在继承与实现都有的情况下,要求先继承后实现。在接口和抽象类都可以使用的情况下,由于接口可以避免单继承的局限,一般优先选用接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值