java8语法--Inteface接口篇

一、引言

     本部分文档从接口创建、接口定义、接口使用来理解java8对新增特性的处理。

二、Jdk接口默认方法与静态方法

代码测试

package com.hecore.grammar.java8;

public interface J8MulIface {

    //1. 同名默认方法
    default void run(){
        System.out.println("与另一个接口的默认方法同名,导致重名问题");
    }

    // 非同名默认方法
    default void mulRun(){
        System.out.println("防止与另一个接口的默认方法同名,不会有重名问题");
    }

    //2. 静态方法
    static void staicMethod(){
        System.out.println("static method");
    }

}

 

1.J8接口中有同名的默认实现问题:

com.hecore.grammar.java8.J84IMulfacelImpl inherits unrelated defaults for run() from types com.hecore.grammar.java8.J8Iface and com.hecore.grammar.java8.J8MulIface

思考:

继承类当引用第三方包实现的两接口都同名了怎么办?

(1).指定接口

public void run(){
    J8Iface.super.run();
}

(2).多接口调用

三、函数式接口

 @FunctionInterface用于检测是否为函数式接口以及语法是否合理。

不支持多于一个的抽象方法

 支持 默认方法、静态方法、Java.lang,Object中的方法。

四、接口方法引用

关键字 : :

/**
 * 方法引用就是lambda的一种简化写法,相当于把方法当成一个变量赋值给另一个方法,这个方法接受的参数是一个函数接口
 * 1.方法是static的: 类名::方法名
 * 2.方法不是static的:对象::方法名
 * 3.构造方法: 类名::new
 *
 * java8应用-->Collectors,查看源码会发现 内部实现机制便是实现lambda接口
 */
public class FunctionInvoke {

    // 接收函数式接口
    public static void ReceiveFunctionIface(FunctionIface fi){
        fi.deal("receive iface");
    }

    public static void main(String[] args) {

    }

}

/**
 * 1.定义函数式接口
 * 注解作用检测是否为函数式接口
 * 支持接口默认方法、静态方法、java.lang.Object方法
 */
@FunctionalInterface
interface  FunctionIface{
    void deal(String str);
}

/**
 * 不支持多个抽象方法
 */
//@FunctionalInterface
//interface  FunctionTestIface{
//    void deal();
//    void run();
//    void say();
//}


/**
 * 1.1实现函数式接口
 */
class FunctionIfaceImpl implements  FunctionIface{
    public void deal(String str){
        System.out.println(str+" is being deal");
    }
}

 

 

### 回答1: Java中的interface(接口)是一种抽象类型,它只包含了方法的声明,但不包含方法的实现。它是一种约定,规定了类应该具有哪些方法。接口可以被类实现,一个类可以实现多个接口,但必须实现接口中定义的所有方法。 接口的定义使用关键字interface完成。接口的方法默认是public,可以省略。例如: ``` public interface MyInterface { void method1(); void method2(); } ``` 这个例子定义了一个名为MyInterface的接口,它具有两个抽象方法:method1和method2。当一个类实现这个接口时,必须实现这两个方法。 Java中的接口提供了面向对象编程中的很多特性,例如多态性、抽象性、灵活性等。通过接口,可以使代码更加简洁、有机结合、易于维护。 ### 回答2: 在Java中,接口(interface)是一种特殊的引用类型,它用于定义一组必须由其他类来实现的方法。接口定义了一套合约,规定了类要实现的方法及其返回类型,但不包含具体的实现代码。 接口的定义使用关键字interface,接口中的方法默认是公共的抽象方法(public abstract),并且不能含有实例变量。除了抽象方法外,接口还可以定义常量和默认方法。 一个类实现了一个接口时,需要使用关键字implements,并且必须实现接口中的所有抽象方法。一个类可以实现多个接口,这种多重继承方式能够使类具备多个接口所声明的行为。实现了接口的类必须提供接口中定义的所有方法的具体实现,否则该类必须被声明为抽象类。 接口的作用主要有以下几个方面: 1. 实现多态:接口定义了一组规范,允许不同的实现类根据自己的需要去实现这些方法,达到多态的目的。 2. 解耦合:通过接口,可以将具体的实现与调用方分离,降低了各个模块之间的耦合度。 3. 继承的补充:Java中一个类只能继承一个父类,但可以实现多个接口接口可以弥补Java单继承的限制,实现了一种“接口继承”。 4. 定义契约:接口在某种程度上可以看作是一种契约,它规定了实现类需要提供的方法和行为。 总之,接口Java中是一种非常重要的机制,能够实现代码复用、多态和解耦合等目的。通过合理使用接口,可以使得Java程序更加灵活、可扩展和易维护。 ### 回答3: 在Java中,接口(interface)是一种特殊的引用类型,它定义了一组方法的规范,但没有具体的实现。一个类可以实现一个或多个接口,通过实现接口中定义的方法来完成自己的逻辑。 接口Java中有以下几个特点: 1. 接口是通过`interface`关键字来定义的,与普通类的定义类似,但方法没有具体的实现。 2. 接口中的方法默认为`public abstract`,不需要显式地写出来。 3. 类通过`implements`关键字来实现接口,一个类可以实现多个接口,使用逗号分隔。 4. 实现接口的类必须实现接口中的所有方法,否则会报错。 5. 一个接口可以继承多个其他接口,使用`extends`关键字。 6. 接口不能被实例化,不能创建接口的对象,但可以通过接口的引用指向实现这个接口的类对象。 通过接口,我们可以定义一些通用的行为和功能,而不需要考虑具体实现。这使得代码更加灵活、可扩展和可维护。 在真实的项目中,接口广泛应用于面向对象的设计和编程中。接口可以用来定义回调方法、实现多态、实现API的规范等。通过使用接口,我们可以实现代码的解耦合,提高代码的复用性和可读性。 总而言之,Java中的接口是一种规范,它定义了一组方法,类通过实现接口来实现方法的具体逻辑,使得代码更加灵活、可扩展和可维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值