一个类只能继承一个类(单根继承),但是一个类可以实现多个接口,多个接口之间使用,分隔
* 接口中的方法只能是抽象方法,默认修饰符都是public abstract
* 一个类实现了一个接口,必须重写接口中的所有抽象方法,如果不重写,那么实现了类也要定义为抽象类
* 接口不能实例化,但是可以将接口的引用指向其实现类实例
* 接口的变量都是静态常量,默认修饰修饰public static final
代码示例:
防盗门实现门和锁的功能:
- package cn.bdqn.demo02;
-
- public interface Lock {
-
- // 定义锁“开锁”和“上锁”的功能
- public abstract void openLock();
-
- public abstract void closeLock();
-
- }
- package cn.bdqn.demo02;
-
- public abstract class Door {
-
- //定义门的“开门”和“关门”功能
- public abstract void openDoor();
-
- public abstract void closeDoor();
-
- }
- package cn.bdqn.demo02;
-
- public class AntiTheftDoor extends Door implements Lock,TakePhoto {
-
- @Override
- public void openDoor() {
- System.out.println("用力一推,门开了....");
-
- }
-
- @Override
- public void closeDoor() {
- System.out.println("用力一拉,门关了......");
-
- }
-
- @Override
- public void openLock() {
- System.out.println("插入钥匙,左转3圈,锁开了......");
-
- }
-
- @Override
- public void closeLock() {
- System.out.println("插入钥匙,右转3圈,上锁了....");
-
- }
-
- @Override
- public void image() {
- System.out.println("咔嚓,请注意你的行为,已经拍照存档了......");
-
- }
-
- }
USB风扇和USB鼠标实现USB功能:
- package cn.bdqn.demo03;
-
- public interface USB {
-
- //定义两个方法
-
- void electric();
-
- void data();
-
-
-
- }
- package cn.bdqn.demo03;
-
- public class USBFengSan implements USB {
-
- @Override
- public void electric() {
- System.out.println("风扇获取电能,风扇开始运作....");
-
- }
-
- @Override
- public void data() {
-
-
- }
-
- public void qqqq(){
- System.out.println("我是风扇类中独有的方法");
- }
-
- }
- package cn.bdqn.demo03;
-
- public class USBMouse implements USB {
-
- @Override
- public void electric() {
- System.out.println("鼠标获取电能,开始运作....");
-
- }
-
- @Override
- public void data() {
- System.out.println("获取数据传输能力,开始传输数据....");
-
- }
-
- public void test(){
- System.out.println("我是鼠标类中特有的方法");
- }
-
- }
接口不能实例化
接口的引用不能调用实现类中特有的方法,需要进行向下转型
- package cn.bdqn.demo03;
-
- public class Test {
-
- public static void main(String[] args) {
- // 接口不能实例化
- // USB usb = new USB();
-
- //直接通过接口的实现类构造方法创建对象
- USBFengSan usbf = new USBFengSan();
- usbf.electric();
- usbf.data();
-
- System.out.println("---------------");
-
- //通过向上转型创建实现类对象
- //向上转型:“父类(接口)的引用指向实现类的实例
- USB usb = new USBFengSan();
- usb.electric();
-
- usb = new USBMouse();
- usb.electric();
- //接口的引用不能调用实现类中特有的方法,需要进行向下转型
- // usb.test();
- //在向下转型过程中,容易出现类型转换异常
- // USBFengSan usbs = (USBFengSan)usb;
- // USBMouse usbm = (USBMouse)usb;
- // usbm.test();
-
- //可以使用instanceof关键字进行类型判断,避免异常
- if(usb instanceof USBFengSan){
- USBFengSan usbs = (USBFengSan)usb;
- usbs.qqqq();
- }else if(usb instanceof USBMouse){
- USBMouse usbm = (USBMouse)usb;
- usbm.test();
- }
-
- }
-
- }
接口不可以被实例化
实现类必须实现接口的所有方法
实现类可以实现多个接口 implements、多个接口使用逗号隔开
接口中的变量都是静态常量(public static final)
所有方法默认都是: public abstract