Java中接口的讲解

接口

接口的声明

接口是一种特殊的抽象类,使用interface声明
定义一个接口A,如下所示

public interface A {

}

接口的特性

1.不可以实例化对象但可以向上转型或向下转型,以及不能定义构造方法

public interface A{
	public A(){}  //定义了构造方法,报错
}
public class Test {
	public static void main(String[] args) {
		A a=new A();//实例化接口,报错
	}
}

2.接口里的属性(变量)都为常量,定义的时候必须赋值

public interface A{
	int a; //没有赋值,报错
	int b = 1; //正确
}

3.接口中的所有的方法都是抽象方法,可以不用abstract修饰

public interface A{
	void method1();
	abstract void method2();
	void method3(){}//接口中只能写抽象方法,报错
}

4.接口中只可以使用public权限,public也是接口中的默认权限

public interface A{
	public int a = 10;
	private int b = 10; //使用了private权限,报错
	protected int c = 10; //使用了protected权限,报错
}

5.接口和类之间,单继承,多实现。实现接口使用implements关键字

public class Father{}//父类
public interface A extends Father{}
//接口A,继承了父类Father    单继承
public interface A2 {} //接口2
public class A1 implements A,A2{}  
//类A1,使用implements关键字实现了接口A和A2
//中间使用逗号分隔,可实现任意个接口   多实现

6.接口之间可以多继承

public interface A{}
public interface B{}
public interface C{}
public interface D{}
public interface E extends A,B,C,D{}
//接口E,继承了接口A,B,C,D    接口之间多继承

7.一个类只要实现了接口,就必须对实现的接口中所有的方法进行强制重写;除非这个类也是抽象类

public interface A{
	void method1();
	void method2();
}
public class B implements A{
	@Override
	public void method1() {}  //强制重写方法1
	@Override
	public void method2() {}  //强制重写方法2
}
public abstract class C implements A{}  //抽象方法不用强制重写接口中的方法

接口的使用方法

需要满足:一个类拥有某个能力 能力指的就是接口
例如:
所有手机可以打电话,发短信
但智能手机除了打电话发短信以外,还可以上网,拍照,老人机也可以拍照,但不能上网
那么就适合把打电话、发短信定义到父类Phone中,把拍照这种特殊能力(功能)定义成一个接口,让具有拍照能力的手机来实现它

//父类 手机类
public class Phone{
	public abstract sentMessage();//发短信
	public abstract calll();//打电话
}
//接口, 拍照
public interface Photo{
	void takePhoto();
}
//子类智能手机,继承手机类,实现了拍照接口
public class SmartPhone extends Phone implements Photo{
	@Override
	public void sentMessage(){} //重写发短信方法
	@Override
	public void call(){} // 重写打电话方法
	@Override
	public void takePhoto(){} //重写拍照方法

	public void internet(){} //独有的上网功能
}
//子类老人机,继承手机类,实现拍照接口
public class OldPhone extends Phone implements Photo{
	@Override
	public void sentMessage(){} //重写发短信方法
	@Override
	public void call(){} // 重写打电话方法
	@Override
	public void takePhoto(){} //重写拍照方法
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值