面向对象——接口类

本文详细介绍了面向对象编程中接口的概念及其使用方法,包括接口的基础语法、特点及其实现方式,并通过实例展示了如何利用接口来降低程序耦合度并提高扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向对象——接口类

接口的基础语法

[修饰符列表] interface 接口名{
    
}

1.接口也是一种引用数据类型

2.借口是完全抽象的

3.接口支持多继承,一个接口可以继承多个接口

接口中只包含两部分内容,常量和抽象方法

4.接口中所有元素都是public修饰的

5.接口中的抽象方法定义时:public abstract修饰符可以省略

6.接口中的方法都是抽象方法,所以接口中的方法不能有方法体。

7.接口中常量的public static final 可以省略

8.一个非抽象类实现接口的时候,必须将接口中的方法加以实现

9.一个类可以实现多个接口

10.extends 和 implements 可以共存,extends 在前,implements 在后

11.使用接口,写代码的时候,可以使用多态(父类型引用指向子类型对象)

//Figure.java文件
package com.shouyerenst;
public interface Figure {//接口中静态成员变量
    String name = "几何图形";//省略public static final ② 
	// 绘制几何图形方法
	void onDraw(); //省略public ③ 
}

代码第①行是声明Figure接口,声明接口使用interface关键字,interface前面的修 饰符是public或省略。public是公有访问级别,可以在任何地方访问。省略是默认访问级别,只能在当前包中访问。代码第②行声明接口中的成员变量,在接口中成员变量都静态成员变量,即省略了public static final修饰符。代码第③行是声明抽象方法,即省略了public关键字。

某个类实现接口时,要在声明时使用implements关键字,当实现多个接口之间用逗号(,)分隔。实现 接口时要实现接口中声明的所有方法。

实现接口Figure示例代码如下:

//Ellipse.java文件 
package com.shouyerenst.imp;

import com.shouyerenst.Figure; 
//几何图形椭圆形 
public class Ellipse implements Figure { 
    //绘制几何图形方法 
    @Override 
    public void onDraw() { 
        System.out.println("绘制椭圆形..."); 
    } 
}
//Triangle.java文件 
package com.shouyerenst.imp; 

import com.shouyerenst.Figure; 
//几何图形三角形 
public class Triangle implements Figure {
// 绘制几何图形方法 
    @Override 
    public void onDraw() { System.out.println("绘制三角形..."); 
                         } 
}

注意 接口与抽象类一样都不能被实例化。

接口在开发中的作用

接口在开发中的作用,类似于多态在开发中的作用。降低程序的耦合度,提高程序的扩展性。

面向接口编程,可以降低程序的耦合度,提高程序扩展力。符合ocp开发原则。接口的使用离不开多态机制

一个经典案例

顾客通过菜单点菜,厨师实现菜单内容。

菜单接口

package com.shouyerenst.OCP;
//菜单接口
public interface Menu {
    //西红柿炒鸡蛋
    void ScrambledEggsWithTomatoes();
    //鱼香肉丝
    void ShreddedFishAndMeat();
}

中餐厨师类

package com.shouyerenst.OCP;
//中餐厨师
public class ChineseChef implements Menu{
    //西红柿炒鸡蛋
    public void ScrambledEggsWithTomatoes(){
        System.out.println("中餐厨师做的西红柿炒鸡蛋!!!");
    }
    //鱼香肉丝
    public void ShreddedFishAndMeat() {
        System.out.println("中餐厨师做的鱼香肉丝!!!");
    }
}

西餐厨师类

package com.shouyerenst.OCP;
//西餐厨师
public class WesternChef implements Menu{
    //西红柿炒鸡蛋
    public void ScrambledEggsWithTomatoes(){
        System.out.println("西餐厨师做的西红柿炒鸡蛋!!!");
    }
    //鱼香肉丝
    public void ShreddedFishAndMeat() {
        System.out.println("西餐厨师做的鱼香肉丝!!!");
    }
}

顾客类

package com.shouyerenst.OCP;
//顾客
public class Customer {
    private Menu menu;
    
    //构造方法
    public Customer() {
    }
    public Customer(Menu menu) {
        this.menu = menu;
    }
    
    //get、set方法
    public Menu getMenu() {
        return menu;
    }
    
    public void setMenu(Menu menu) {
        this.menu = menu;
    }
    
    public void order(){//点菜方法
        //Menu m = this.getMenu();
        menu.ScrambledEggsWithTomatoes();
        menu.ShreddedFishAndMeat();
    }
}

测试类

package com.shouyerenst.OCP;

public class Test {
    public static void main(String[] args) {
        //创建厨师对象
        Menu cook1 = new ChineseChef();
        //创建顾客对象
        Customer customer = new Customer(cook1);
        //顾客点菜
        customer.order();
    }
}

抽象类与接口区别

归纳抽象类与接口区别如下:

  1. 接口支持多继承,而抽象类(包括具体类)只能继承一个父类。

  2. 接口中不能有实例成员变量,接口所声明的成员变量全部是静态常量,即便是变量不加 public static final 修饰符也是静态常量。抽象类与普通类一样各种形式的成员变量都可以声明。

  3. 接口中没有包含构造方法,由于没有实例成员变量,也就不需要构造方法了。抽象类中可以有实例成员变量,也需要构造方法。

  4. 抽象类中可以声明抽象方法和具体方法。Java 8之前接口中只有抽象方法,而Java 8之后接口中也可以声明具体方法,具体方法通过声明默认方法实现。

在这里插入图片描述

感觉不错的话,动手点个赞吧!

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

守夜人st

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值