接口
- 接口的基础语法:
1.接口也是一种引用数据类型。
2.接口是完全抽象的。或者说接口是特殊的抽象类。
3.定义:
[修饰符列表] interface 接口名{
}
4.接口支持多继承,一个接口可以继承多个接口。
interface C extends A,B{
}
5.接口只包含常量(final,static)和抽象方法.
6.接口中的成员变量都隐含public,static,final属性,方法隐含public,abstract属性,可以省略不写。
7.接口中的方法都是抽象方法,所以接口中的方法不能有方法体。
8.接口中的常量定义时一定要赋初值,且此值不能再更改。
- 类实现接口
类和类之间叫做继承,类和接口之间叫做实现。可以将其理解为“继承”。
继承使用extends关键字。
实现使用implements关键字。 - 当一个非抽象的类接口的话,需要将接口中所以的方法实现。重写/覆盖/实现 接口的方法权限不能降低,所以必须声明public.
- 接口的多态
MyMath a = new MyMathPI//向上转型,父类型的引用指向子类型的对象,运行时找的是类的类型。
接口必须通过类实现后才能使用,否则就仅仅是一个框架。 - 一个类可以同时实现多个接口,比如计算机可以实现多个接口。其实现了多继承的功能,弥补了Java类单继承的缺陷。
- 接口不同类之间没有‘继承’关系,向下转型也编译不会报错,运行时会报错。
- 继承和实现都存在的话,代码该怎么写?
extends在前implements在后。 - 一个非抽象的类,实现接口的时候,必须将接口中所有方法加以实现。
- 接口中方法不能有方法体。
- 接口在开发中用什么作用?
接口在开发中的作用,类似于多态在开发中的作用。多态,面向抽象编程,不要面向具体编程,提高程序的扩展力。
例如写一个养宠物系统。
接口在开发中的作用?
面向抽象编程:即面向接口编程。可插拔接口。如主板和内存条,usb接口,电脑与键盘…。扩展力好。
//实现顾客到店点餐系统,菜单作为接口
/*接口的作用*/
public class Test1 {
public static void main(String[] args) {
Customer f=new Customer();
f.setName("jia");
Menu Cooker1=new ChineseCooker();//多态,向上转型,创建中国厨师
f.setCc(Cooker1);
f.order();
Menu Cooker2 =new FranchCooker();//创建法国厨师
f.setCc(Cooker2);
f.order();
System.out.println(f.getName());
}
}
//接口
interface Menu {
int YuXiang();
int Pizza();
}
//顾客类
class Customer {
private String name;
private Menu cc;
//构造方法
public Customer() {
}
public Customer(String name, Menu cc) {
this.name = name;
this.cc = cc;
}
//封装
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Menu getCc() {
return cc;
}
public void setCc(Menu cc) {
this.cc = cc;
}
// 点菜方法
public void order(){
Menu fm=this.getCc();//获得菜单
fm.YuXiang();//厨师做菜
fm.Pizza();
}
}
//中国厨师实现菜单的中餐
class ChineseCooker implements Menu{
public int YuXiang(){
System.out.println("Chinese鱼香肉丝!");
return 0;
}
public int Pizza(){
System.out.println("Chinese披萨!");
return 0;
}
}
//法国厨师实现菜单中的西餐
class FranchCooker implements Menu{
public int YuXiang(){
System.out.println("Franch鱼香肉丝!");
return 0;
}
public int Pizza(){
System.out.println("Franch披萨!");
return 0;
}
}
一个java源文件,只能出现一个public类。
- 类型与类型之间的关系?
*
抽象类和接口有什么区别?
语法上区别:
抽象类是半抽象的。
接口是完全抽象的。
抽象类中有构造方法
接口中没有构造方法
接口和接口之间支持多继承。
类和类直间只能单继承。
一个类可以同时实现多个接口
一个抽象类只能继承一个类。
接口只能出现常量和抽象方法。
接口使用的比抽象类多,一般都是对“行为的抽象”。