前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java类之接口

Java类之接口

作者头像
JanYork_小简
发布2022-03-29 12:32:06
2650
发布2022-03-29 12:32:06
举报
文章被收录于专栏:小简技术栈

首先,我们先了解一下Java中抽象类与继承

abstract可以定义抽象类,extends可以定义继承。但是对于Java这个语言,它的继承相对与CPP它舍弃了多继承,防止关系太多耦合,易混淆。

多继承会造成

1、若子类继承的父类中拥有相同的成员变量,子类在引用该变量时将无法判别使用哪个父类的成员变量

2、若一个子类继承的多个父类拥有相同方法,同时子类并未覆盖该方法(若覆盖,则直接使用子类中该方法),那么调用该方法时将无法确定调用哪个父类的方法。

Java里面,是不可以多继承的!

Java实现“多继承”的三种方式

但是我们有时候也是需要多继承的。

于是我们可以使用某些方法替代多继承。

  • 多层继承:实际就是多个单继承累积,最下面的子类可以具备前几个父类的特征,但这样的多继承会造成代码冗余,可读性较差,一般的开发同学都不会这样浪费时间。
  • 内部类:通过成员内部类实现多继承。
  • 接口:多继承机制实现优先使用接口,接口使用比较灵活,在企业级项目编程是最推荐的方式

一般都是接口来实现多继承。

接口

那说了这么多,啥是接口?

接口与抽象类有几个共同的,与继承也有类似之处。

接口与抽象类
  1. 都是上层的抽象层。
  2. 都不能被实例化。
  3. 都能包含抽象的方法,这些抽象方法用于描述类具备的功能,但是不提供具体的实现。
何为接口

接口在JAVA编程语言中是一个抽象类型,是抽象方法的集合

我们先来看看网上的说法:

接口可以理解为一种特殊的类,里面全部是由*全局常量*公共的抽象方法所组成。接口是解决*Java无法使用多继承*的一种手段,但是接口在实际中更多的作用是*制定标准*的。或者我们可以直接把接口理解为*100%的抽象类*,既接口中的方法*必须全部*是抽象方法。 官方的解释是这样的: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)

接口的优势

  1. 接口被用来描述一种抽象。
  2. 因为Java不像C++一样支持多继承,所以Java可以通过实现接口来弥补这个局限
  3. 接口也被用来实现解耦
  4. 接口被用来实现抽象,而抽象类也被用来实现抽象,为什么一定要用接口呢?接口和抽象类之间又有什么区别呢?原因是抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是finalpublic,static的。

定义接口

声明一个接口,我们使用interface这个关键字

定义了接口之后,我们需要注意:

JDK 1.8 以后,接口里可以有静态方法和方法体了。 JDK 1.8 以后,接口允许包含具体实现的方法,该方法称为"默认方法",默认方法使用 default 关键字修饰。 JDK 1.9 以后,允许将方法定义为 private,使得某些复用的代码不会把方法暴露出去。

这样我们就可以定义一个方法,在IDEA中我们可以直接创建!

在接口中,我们用implements关键词来对接接口。假设我们定义一个接口类叫Text,普通类叫Demo。

定义接口

代码语言:javascript
复制
public interface Text {
    //下面定义了两个方法
    //没有方法体哦!!!
    String getName();
    void show();
}

接入接口

代码语言:javascript
复制
public class Demo implements Text {
    
}

使用接口中的方法

代码语言:javascript
复制
public class Demo implements Text {
    
    //在子类Demo中重写Text就可以
    
    @Override
    public String getName() {
        return "我被重写了";
    }

    @Override
    public void show() {
        System.out.println("Hello Word");
    }
}

调用输出

代码语言:javascript
复制
public class ShowDemo {
    public static void main(String[] args) {
        Text text = new Demo();
        test.getName();
        text.show();
    }
}

这样我们就调用了这个接口的方法。

注意:必须要重写接口里面的方法哦!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022 年 03 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java实现“多继承”的三种方式
  • 接口
    • 接口与抽象类
      • 何为接口
      • 接口的优势
      • 定义接口
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档