栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

学习java接口,认识接口规范

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习java接口,认识接口规范

---
    • 接口概述,特点
      • 接口的定义与特点
      • 什么是接口
    • 接口的基本使用:被实现
      • 接口的用法:
    • 接口与接口的关系:多继承
    • JDK8开始接口新增方法.
      • 第一种:默认方法
      • 第二种:静态方法
      • 第三种:私有方法
    • 使用接口的注意事项

接口概述,特点 接口的定义与特点

接口的格式如下:
JDK 8之前接口中只能有抽象方法和常量。

package com.interface_;
public interface Inter_ {
//    public static final abc = "abc";
//    等同:
    String abc = "abc";

//    public abstract void a();
//    等同:
    void a();
}
什么是接口
  • 接口更是一种规范,一种必需要干什么的声明,一种约束,用来约束开发者一定要遵循这个接口干什么事。
  • 规范得思想使得接口里面的成员必须公开为public
  • 由于接口体现规范思想,规范默认都是公开的,所以代码层面,public static final 可以省路不写,默认就是常量。
  • 由于接口体现规范思想,规范默认都是公开的,所以代码层面,public abstract可以 省略不写,默认就是抽象方法。
接口的基本使用:被实现 接口的用法:

接口是用来被类实现( implements)的,实现接口的类称为实现类。实现类可以理解成所谓的子类。

创建接口:IDEA——Package——New——JavaClass——Interface

接口在使用的时候就像是一个套接模板,利用接口可以快捷的生成必须得内容。接口方法则靠重写(注意接口的方法均为抽象方法所以必须重写完全部接口方法)。
多实现和单实现没什么区别因此下面只演示单实现的代码:

package com.interface_;

public interface Inter_Human {
    String type = "人类种";
    void life();
    void die();
}
package com.interface_;

public class Class_1 implements Inter_Human{
    @Override
    public void life() {
        System.out.println("人必须活着");
    }

    @Override
    public void die() {
        System.out.println("人必须逝去");
    }
}
package com.interface_;

public class Main {
    public static void main(String[] args) {
        Class_1 c1 = new Class_1();
        c1.life();
        c1.die();
    }
}
运行结果:
人必须活着
人必须逝去
接口与接口的关系:多继承
  • 类和类的关系:单继承。
  • 类和接口的关系:多实现。
  • 接口和接口的关系:多继承,一个接口可以同时继承多个接口。

不继承的接口多实现演示:

package com.interface_;

public class Class_1 implements Inter_Human,Inter_,Inter_baka{
    @Override
    public void a() {
        
    }

    @Override
    public void life() {

    }

    @Override
    public void die() {

    }

    @Override
    public void baka() {

    }
}

接口多继承+多实现的演示:

package com.interface_;
public interface Inter_ extends Inter_Human,Inter_baka{
    String abc = "abc";
    void a();
}
package com.interface_;

public class Class_1 implements Inter_{
    @Override
    public void a() {

    }

    @Override
    public void life() {

    }

    @Override
    public void die() {

    }

    @Override
    public void baka() {

    }
}

可以发现上述两个实现类接口多实现的效果是一样的,但是后者在书写上稍微简洁一些
接口多继承的作用
规范合并,整合多个接口为同一个接口,便于子类实现。

JDK8开始接口新增方法.
  • jdk8之后允许接口中直接定义带有方法体的方法
第一种:默认方法

●类似之前写的普通实例方法:必须用default修饰
●默认会public修饰。需要用接口的实现类的对象来调用

第二种:静态方法

●默认会public修饰, 必须static修饰。
●注意:接口的静态方法必须用本身的接口名来调用。

第三种:私有方法

●就是私有的实例方法:,必须使用private修饰,从JDK 1.9才开始有的。
●只能在本类中被其他的默认方法或者私有方法访问。

package com.Mon5day1;

public interface SportManInter {
    void func0();
//    jdk8之后开始支持接口内部定义默认方法,包含函数体的函数必须有default修饰,默认就是public修饰可加可不加
//    接口的方法只能由实现类的对象来调用,无须再实现类内部添加覆盖函数
    public default void func1(){
        System.out.println("Default function of Interface.");
        fun3();
    };

//    静态方法,直接访问接口名来使用,必须使用static修饰,默认为public,可写可不写
    public static void fun2(){
        System.out.println("Static Function of Interface");
    }

//    私有方法,仅能在接口内部使用,基本是用不上的
    private void fun3(){
        System.out.println("Private function of Interface.");
    }
}
package com.Mon5day1;

public class ImeClass implements SportManInter{
    @Override
    public void func0() {
        System.out.println("Common function of interface");
    }
}
package com.Mon5day1;

public class Main {
    public static void main(String[] args) {
        ImeClass ime = new ImeClass();
        ime.func0();
        ime.func1();
        SportManInter.fun2();
    }
}
JDK8新增的3种方法我们自己在开发中很少使用,通常是
Java源码涉及到。现阶段需要理解、识别语法,明白调用关
系即可。
使用接口的注意事项
  1. 接口不能创建对象(绝不能违反)
  2. 一个类实现多个接口,多个接口中有同样的静态方法不冲突。
  3. 一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类的。
  4. 一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写该方法即可。重写即舍弃所有接口的同名方法,也因此我们是可以说完全用不到的一个语法
  5. 一个接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承。
interface AA{
void run();
interface BB{
void run();
}
interface CCC extends AA,BB{
	// 不报错,这种语法叫规范合并
}
interface AA{
void run();
interface BB{
int run();
}
interface CCC extends AA,BB{
	// 报错,一个无返回值一个有返回值,冲突
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/852204.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号