需求:分别描述以下三种动物的行为:
狗:吃;叫;
猫:吃;叫;
猪:吃;叫;
需求升级:
根据后天的训练和学习,猫和狗都学会了表演;
结论:接口就是用来描述不属于一个继承体系中的共有属性和行为的;
接口的代码体现:
接口不是一个类,所以不能使用class关键字声明,而是使用interface关键字声明;
接口名的命名和类的命名一样:
首字母大写,多个单词,每个单词首字母都要大写;
最好见名知意;
更严格的要求是:所有接口名,都以大写字母I开头;
interface IPerform{
}
(注意:从jdk8开始,接口中可以书写默认实现的函数,使用关键字default修饰;)
注意:接口不能创建对象,里面没有构造函数。
结论:接口的实现,需要使用implements关键字;
注意:一个类实现接口,必须实现接口中所有抽象函数;否则,这个类也应该定义为抽象类;
继承一个类同时实现接口
结论:一个类继承其他类,同时实现接口,应该先写类的继承;
使用多态的方式使用接口
接口的多实现
接口和类是实现的关系,一个类可以同时实现多个接口,叫做接口的多实现;
如果一个类同时实现多个接口,就要实现每一个接口中的所有抽象函数。否则,这个类也要定义为抽象类。
接口和接口之间是继承关系,一个接口可以同时继承多个父接口;
注意:
接口的使用思想
接口用来描述不属于一个继承体系的额外的公共的功能;通过多态使用接口,可以提高程序的扩展性;接口实现的java的多继承;接口用来定义规范;
规则:交通规则;校规、班规等等,是必须要被遵守的东西;接口中可以书写的成员:抽象函数和成员变量(被final关键字修饰,也就是常量);Java中实现接口的类,都必须具有接口中定义好的方法,具有接口中规定好的属性值;
需求:使用Java代码模拟电脑使用键盘和鼠标;
传统的实现方式:
//定义类表示电脑
class Computer{
public void useKeyBoard(KeyBoard kb) {
kb.start();
kb.input();
kb.stop();
}
//定义方法,表示电脑使用鼠标
public void useMouse(Mouse m) {
m.start();
m.move();
m.stop();
}
}
//定义类表示鼠标
class Mouse{
//通电开启
public void start() {
System.out.println("鼠标启动");
}
//断电关闭
public void stop() {
System.out.println("鼠标停止");
}
//鼠标工作
public void move() {
System.out.println("鼠标移动和点击");
}
}
//定义类表示键盘
class KeyBoard{
//通电开启
public void start() {
System.out.println("键盘启动");
}
//断电关闭
public void stop() {
System.out.println("键盘停止");
}
//键盘工作
public void input() {
System.out.println("键盘录入数据");
}
}
public class Test {
//需求:使用Java代码模拟电脑使用键盘和鼠标;
public static void main(String[] args) {
//创建一个电脑对象
Computer c = new Computer();
//创建一个键盘对象
KeyBoard kb = new KeyBoard();
//模拟电脑使用键盘
c.useKeyBoard(kb);
System.out.println("----模拟电脑使用鼠标-----");
//创建一个鼠标对象
Mouse m = new Mouse();
c.useMouse(m);
}
}
使用USB接口的方式:
//定义一个USB接口
interface USB{
//通电开启
public void start();
//断电关闭
public void stop() ;
//USB设备工作的功能
public void work() ;
}
class Cam implements USB{
@Override
public void start() {
System.out.println("摄像头通电开启");
}
@Override
public void stop() {
System.out.println("摄像头断电关闭");
}
@Override
public void work() {
System.out.println("摄像头拍摄");
}
}
//定义类表示电脑
class Computer{
public void useUSB(USB usb) {
usb.start();
usb.work();
usb.stop();
}
}
//定义类表示鼠标
class Mouse implements USB{
//通电开启
public void start() {
System.out.println("鼠标启动");
}
//断电关闭
public void stop() {
System.out.println("鼠标停止");
}
//鼠标工作
public void move() {
System.out.println("鼠标移动和点击");
}
@Override
public void work() {
move();
}
}
//定义类表示键盘
class KeyBoard implements USB{
//通电开启
public void start() {
System.out.println("键盘启动");
}
//断电关闭
public void stop() {
System.out.println("键盘停止");
}
//键盘工作
public void input() {
System.out.println("键盘录入数据");
}
@Override
public void work() {
input();
}
}
public class Test {
//需求:使用Java代码模拟电脑使用键盘和鼠标;
public static void main(String[] args) {
//创建一个电脑对象
Computer c = new Computer();
//创建一个键盘对象
KeyBoard kb = new KeyBoard();
//模拟电脑使用键盘
c.useUSB(kb);
System.out.println("----模拟电脑使用鼠标-----");
//创建一个鼠标对象
USB m = new Mouse();
c.useUSB(m);
System.out.println("----模拟电脑使用摄像头---");
//创建一个摄像头对象
Cam cm = new Cam();
//调用电脑使用USB外设的方法,使用摄像头
c.useUSB(cm);
}
}
接口的声明格式:
interface Inter{}
接口中能书写的成员:
成员变量:全部都使用public static final 修饰;所以接口中的成员变量都是常量;成员函数:全部都使用 public abstract 修饰;接口中没有构造函数;
接口的细节:
接口不能实例化,只能被类实现;实现接口的类必须实现接口的所有方法,否则实现类必须是抽象的;接口与接口是继承的关系,一个接口可以继承多个接口;类和接口是实现的关系,一个类可以实现多个接口;通常开发中使用接口类型的引用指向实现类的对象,这是多态的体现;
接口的作用:
描述非继承体系中的共性内容;通过多态使用接口,可以提高程序的扩展性;实现的java的多继承;接口可以定义规则;
接口和抽象类的共同点:都可以有抽象函数,都不能实例化;
接口和抽象类的区别
(从JDK8开始,接口中可以有实现的函数,使用关键字default修饰)
接口和抽象类的使用练习
需求:描述手机和电脑,都有开机、关机和可以玩游戏的功能;
练习:将上面的图,转为响应的Java代码;
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:704559159@qq.com