面向对象——接口类

人生之路不会是一帆风顺的,我们会遇上顺境,也会遇上逆境,在所有成功路上折磨你的,背后都隐藏着激励你奋发向上的动机,人生没有如果,只有后果与结果,成熟,就是用微笑来面对一切小事。

导读:本篇文章讲解 面向对象——接口类,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

面向对象——接口类

接口的基础语法

[修饰符列表] 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之后接口中也可以声明具体方法,具体方法通过声明默认方法实现。

在这里插入图片描述


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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/125487.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!