Java_Day12(接口)

接口

  • 接口的基础语法:
    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类。

  • 类型与类型之间的关系?
    *在这里插入图片描述

抽象类和接口有什么区别?

语法上区别:
抽象类是半抽象的。
接口是完全抽象的。

抽象类中有构造方法
接口中没有构造方法

接口和接口之间支持多继承。
类和类直间只能单继承。

一个类可以同时实现多个接口
一个抽象类只能继承一个类。

接口只能出现常量和抽象方法。

接口使用的比抽象类多,一般都是对“行为的抽象”。

发布了50 篇原创文章 · 获赞 8 · 访问量 3071

猜你喜欢

转载自blog.csdn.net/jiahuan_/article/details/105018258
今日推荐