(31)Java基础语法
- (31)Java基础语法 推荐度:
- 相关推荐
(31)Java基础语法
目录
1、接口的概述
2、接口的定义格式
3、在接口中定义抽象方法
4、定义接口的 实现类
5、接口的使用
接口练习
6、接口的特点
7、一个实现类可以同时实现多个接口
8、接口的继承
9、设计提示
1、接口的概述
现实生活中的接口,比如USB接口为例:
接口其实就是规定一些标准,要求各个生产厂商必须遵守这个标准。
好处:
按照这个标准生产出来的设备都能在这个USB接口上使用,能让这些设备通用。
Java中的接口:
是一个比抽象类还抽象的程序。
它里面定义的方法一般都是抽象方法。
在接口中定义的抽象方法其实就是接口定义的规范和标准。
要求它的实现类都必须具有这些方法,如果它的实现类有这些方法了说明这些实现类是可以被使用的, 否则实现类是不能被使用的。
在JDK新版本中,也可以定义默认方法、私有方法、静态方法、变量
只能从一个类继承,但可以声明实现了多个接口,接口是多重继承的替代品。
2、接口的定义格式
权限修饰符 interface 接口名{
定义抽象方法
定义常量
定义变量
定义静态方法
定义默认方法
定义私有方法
}
public interface Animal { // 接口public abstract void eat(); // 抽象方法(标准格式)abstract void sleep(); // 抽象方法public void method(); // 抽象方法public int id = 0; // 变量public static final double PI = 3.14; // 常量public static void method01(){ // 静态方法}default void method02(){ // 默认方法}
}
3、在接口中定义抽象方法
格式:
public abstract 返回值类型 方法名(形参列表);
简化格式:
public abstract两个关键字可以都省略,也可以只写一个。
如果这两个关键字没有写全,在编译阶段,编译器会自动补全。
在大多数公司里面,都是只写public,不写abstract。
在阿里和少数公司里面,这两个关键字都不写。
void sleep(String where);
4、定义接口的 实现类
实现类就是一个普通的类,但是需要实现(重写)接口中所有的抽象方法。
在实现类中重写接口中的抽象方法,叫做实现接口中的抽象方法。
定义实现类 实现 接口:
权限修饰符 class 类名 implements 接口名{
实现接口中的抽象方法
定义自己特有的属性和方法
}
public interface Animal { // 接口public abstract void eat(String food); // 抽象方法(标准格式)public abstract void sleep(String where);}
public class Cat implements Animal { // 实现类public void eat(String food){System.out.println("猫吃"+food);}public void sleep(String where){System.out.println("猫睡"+where);}
}
5、接口的使用
定义实现类的对象,然后通过对象调用实现的方法。
1.先创建实现类的实例对象:
实现类名 对象名 = new 实现类名(实参列表);
2.通过对象调用实现的方法:
对象名.方法名(实参列表);
接口练习
1、假设一个学校接待方面的程序,招待不同身份的人的食宿问题,其对应规则如下:
身份 | 食 | 宿 |
学生 | 食堂 | 宿舍 |
教师 | 教师食堂 | 学校公寓 |
学生家长 | 招待所 | 招待所 |
理论上,当然可以对每个不同身份的人各定义一个对应的类,并实现各自的方法,但是观察这些类,可以归纳出其有一个共同的模板,即“人”的“食、宿”问题。这时候,就可以发挥接口的功能了。
public interface Person {public abstract void eat();public abstract void sleep();}
public class Student implements Person{@Overridepublic void eat() {System.out.println("在食堂吃饭");}@Overridepublic void sleep() {System.out.println("在宿舍睡觉");}
}
public class Teacher implements Person {@Overridepublic void eat() {System.out.println("在教师食堂吃饭");}@Overridepublic void sleep() {System.out.println("在学校公寓睡觉");}
}
public class Parent implements Person{@Overridepublic void eat() {System.out.println("在招待所吃饭");}@Overridepublic void sleep() {System.out.println("在招待所睡觉");}
}
2、需求说明:
电视、风扇、冰箱等各种电器要想工作必须提供电源,使用接口模拟电器获得电源后进行工作。
分析:
定义电源插座的接口(SocketInterface),具有供电的能力。getElectric()方法
定义类:电视类(TV)、风扇类(Fan)、冰箱类(Icebox),分别实现电源插座接口。
定义测试类,包含电器开始工作的方法,参数为电器对象(接口的引用指向实现类的对象,实现多态)
public interface SocketInterface { // 电源插座接口public abstract void getElectric(); // 通电的方法
}
public class TV implements SocketInterface{@Overridepublic void getElectric() {System.out.println("电视通电后开始工作");work();}public void work(){System.out.println("电视播放节目");}
}
public class Icebox implements SocketInterface {@Overridepublic void getElectric() {System.out.println("冰箱通电后开始工作");work();}public void work(){System.out.println("冰箱工作");}
}
public class Fan implements SocketInterface {@Overridepublic void getElectric() {System.out.println("风扇通电后开始工作");work();}public void work(){System.out.println("风扇工作");}
}
public class SocketInterfaceDemo {public static void main(String[] args) {TV tv = new TV();work(tv);Icebox ib = new Icebox();work(ib);Fan fan = new Fan();work(fan);}public static void work(SocketInterface sif){sif.getElectric();}
}
6、接口的特点
1.接口没有构造方法,不能创建对象。
2.接口只能被它的实现类使用,一个接口可以有多个实现类。
3.接口中可以定义抽象方法,静态方法,默认方法,私有方法,不能定义实例方法。
4.接口可以继承接口,而且可以多继承:
java中的类只能单继承,不能多继承。
5.一个实现类可以实现多个接口。
在什么时候使用接口,什么时候使用抽象类?
当从类中抽取出来的除了有抽象方法外,还有属性或者普通的方法时,需要使用抽象类。
当从类中抽取出来的只有抽象方法时,需要使用接口。
7、一个实现类可以同时实现多个接口
java中允许一个实现类同时实现多个接口的目的,是为了提高实现类的扩展性。
格式:
权限修饰符 class 类名 implements 接口1, 接口2, ...{
实现所有接口中的抽象方法
定义自己特有的属性和方法
}
8、接口的继承
接口可以继承接口,而且可以多继承.
目的是为提高接口的扩展性.
格式:
权限修饰符 interface 接口名 extends 父接口名1,父接口名2,...{
定义抽象方法
...
}
面向接口的开发:
高内聚,低耦合
9、设计提示
1.能用接口的地方,不用类。(面向接口编程)
2.一个模块尽量少知道其它模块的信息,知道的越少,对今后的维护越有利。
上一篇:(30)Java基础 --抽象类
下一篇:(32)java基础语法 --多态polymorphic
- 用php调用接口api
- 【Delphi学习】Form的borderstyle属性
- XML是什么?有什么用?
- SNMP
- Platforms
- Unity数据可视化 温度图效果(一)
- MSYS 1.0.11 + MinGW安装方法
- 梯度下降法和最速下降法区别
- 网络Socket编程
- Revit 二次开发前景
- css复合选择器(后代选择器、子代选择器、并集选择器、链接伪类选择器、:focus选择器)
- C语言void指针的用法
- VC小知识
- 机器学习概述
- 最小二乘支持向量机预测matlab实现,最小二乘支持向量机及其 Pre
- c函数itoa和atoi实现
- Matlab中interp2和interpn的差异
- https双向加密认证
- Qt QSqlQueryModel详解
- Qt中SQL QSqlQuery 对象中prepare() 函数的用法