java基础之接口

定义:

  1. Java接口是一系列方法的声明,是一些方法特征的集合,

使用方法:

  1. 使用interface进行修饰。

  2. 接口中可以包含多个方法,且方法跟抽象类中的抽象方法一样,可以不写实现,子类再实现代码逻辑

  3. 子类实现接口使用implements关键字。

  4. 接口代表一种能力,接口中可以定义N多个方法,子类必须实现这些方法,将这些方法实现,意味着具有了方法的能力。(锁,开锁和关锁的能力)(手机:拍照,视频,语音的能力)

  5. 接口是一种约定,体现在接口名称和注释上。(插座:插座的大小,间距,额定电压)(java连接各种数据库,只需要定义一个接口,有各个数据库厂商来进行具体的实现)

    • 有些接口只有名称

    • 方法的实现通过注释来约定

  6. 可以定义一个新的接口,用extends去继承一个已有的接口。 interface extends interface

  7. 可以定义一个类,用implements去实现一个接口中所有方法 class implements interface

  8. 可以定义一个抽象类,用implements去实现一个接口中的部分方法.abstract implements interface

使用注意事项:

  1. 接口中的方法默认是public abstract,所以public abstract可以省略不写。

  2. 接口中的变量默认是public static final,所以public static final 可以省略不写。

  3. 默认值在编译器编译的时候,都会给加上的,但是为了严谨,我们要自己添加上

 

接口特征

  1. 接口中所有的方法都是抽象方法,不包括方法的实现

  2. 接口不可以被实例化

  3. 接口的子类必须要实现接口中的所有方法。跟抽象类有所不同,抽象类中的抽象方法不需要被非抽象子类实现

  4. 子类可以实现多个接口

  5. 接口中方法和常量无论是否添加public修饰,默认的权限有且仅有一个,就是public

面向接口编程

  1. 关心实现类有何能力,而不关心实现细节

  2. 面向接口的约定而不考虑接口的具体实现

接口和继承的关系

  1. 接口:has a

  2. 继承:is a

C++与JAVA

  1. C++支持多重继承,java支持单重继承

  2. C++多重继承的危险性在于一个类可能继承了同一个方法的丌同实现,会导致系统崩溃。

  3. Java中,一个类只能继承一个类,但同时可以实现多个接口,既可以实现多重继承的效果和功能,也避免的多重继承的危险性。

接口与继承的区别

  1. 父类中可以有构造方法,接口中不能有构造方法。

接口和抽象类的区别

  1. 抽象类中的方法可以包含抽象方法,也可以有普通方法。但是接口中只能包含抽象方法。

  2. 抽象类使用abstrat关键字修饰,接口使用interface修饰

  3. 子类使用抽象类用extends,子类实现接口用implements

  4. 子类继承抽象类的时候,必须实现所有的抽象方法,普通方法可以不重写。而接口中的所有方法必须实现。

  5. 抽象类中可以定义成员变量,而接口中只能定义静态常量

  6. 抽象类在子类实现的时候是单继承,而接口是多继承

  7. 抽象类和接口都不能实例化,但是抽象类中可以有构造方法,而接口中不能有构造方法。

  8. 抽象类中可以实现接口,并且不实现接口中方法,而接口只能继承接口,不能实现接口。

    注意:在实际的项目开发过程中,如果可以使用接口,尽量适用接口,将单继承的父类留在最关键的地方。

代码实现

实现功能1——开锁,关锁

门有“开”和“关”的功能,锁有“上锁”和“开锁”的功能 。将门和锁分别定义为抽象类。将门定义为抽象类,锁定义为接口 防盗门继承门,实现锁的接口

Door类

public abstract class Door {
    public Door() {
    }

    public abstract void openDoor();

    public abstract void closeDoor();
}
 

Lock

public interface Lock {
    int a = 10;

    void openLock();

    void closeLock();
}
 

LockDoor类

public class LockDoor extends Door implements Lock {
    public LockDoor() {
    }

    public void openDoor() {
        System.out.println("开门");
    }

    public void closeDoor() {
        System.out.println("关门");
    }

    public void openLock() {
        System.out.println("开锁");
    }

    public void closeLock() {
        System.out.println("上锁");
    }

    public static void main(String[] args) {
        System.out.println(10);
    }
}

LockDoorTest类

public class LockDoorTest {
    public LockDoorTest() {
    }

    public static void main(String[] args) {
        LockDoor lockDoor = new LockDoor();
        lockDoor.openDoor();
        lockDoor.openLock();
        lockDoor.closeLock();
        lockDoor.closeDoor();
    }
}

实现功能2——用程序描述USB接口

USB类

public interface USB {
    public void dataTransfer();

}

Mouse类

public class Mouse implements USB {
    @Override
    public void dataTransfer() {
        System.out.println("鼠标来点击屏幕");
    }
}

UPan类

public class UPan implements USB {
    @Override
    public void dataTransfer() {
        System.out.println("U盘可以传输数据");
    }
}

Fun类

public class Fun implements USB {
    @Override
    public void dataTransfer() {
        System.out.println("可以给风扇提供电");
    }
}

Test类

public class Test {
    public static void main(String[] args) {
        Mouse mouse=new Mouse();
        mouse.dataTransfer();

        UPan uPan=new UPan();
        uPan.dataTransfer();

        Fun fun=new Fun();
        fun.dataTransfer();
    }
}

实现功能3——组装一台计算机

采用面向接口编程思想组装一台计算机。 –计算机的主要组成部分有: ▪CPU ▪硬盘 ▪内存

uploading.4e448015.gif转存失败重新上传取消uploading.4e448015.gif转存失败重新上传取消

 

接口CUP

public interface CPU {
    String getBrand();
    String getHZ();
}

接口HardDisk

public interface HardDisk {
    public String getVolum();
}

IntelCPU类

public class IntelCPU implements CPU {
    @Override
    public String getBrand() {
        return "intel";
    }

    @Override
    public String getHZ() {
        return "2000";
    }
}
 

JSDHardDisk类

public class JSDHardDisk implements HardDisk {
    @Override
    public String getVolum() {
        return "金士顿200G";
    }
}

Computer类

public class Computer {
    public void show(CPU cpu,HardDisk hardDisk){
        System.out.println("计算机的信息如下:");
        System.out.println("CPU的品牌是:"+cpu.getBrand()+",主频是:"+cpu.getHZ());
        System.out.println("硬盘容量是:"+hardDisk.getVolum());
    }
}
 

Test类

public class Test {
    public static void main(String[] args) {
        Computer computer=new Computer();
        CPU cpu=new IntelCPU();
        HardDisk hardDisk=new JSDHardDisk();
        computer.show(cpu,hardDisk);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值