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

jdk1.8中接口中的内容

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

jdk1.8中接口中的内容

jdk1.8中接口中的内容

在jdk1.8中接口中可以定义抽象方法,默认方法,静态方法以及常量。

  • 接口中的抽象方法
    package com.pyi.blog;
    
    
    public interface AbstractMethod {
       public abstract void abstractmethod();//这是一个抽象方法。
    }
    

    接口中的抽象方法必须是两个固定的关键词public abstract修饰,这两个关键词可省略不写,但它们默认修饰接口中的抽象方法。

    package com.pyi.blog;
    
    
    public class AbstractMethodTest implements AbstractMethod{
        @Override
        public void abstractmethod() {
            System.out.println("抽象方法实现!");
        }
    }
    

    接口的实现类必须覆盖重写接口中的所有抽象方法,否则这个类要是抽象类。

    package com.pyi.blog;
    
    
    public class AbstractTest {
        public static void main(String[] args) {
            AbstractMethodTest abs=new AbstractMethodTest();
            abs.abstractMethod();
        }
    }
    

    运行结果如下:


  • 接口中的默认方法

接口中的默认方法是有方法体的,它可以解决接口中的改动升级等问题。在接口中的内容改变时,如再添加一些抽象方法来实现某些功能时,接口的实现类又要覆盖重写接口中新添加的抽象方法,这样操作起来十分麻烦。因此可以在接口中定义默认方法,默认方法可以被实现类继承。实现类对象可直接调用而不需要覆盖重写它。若有需要,接口的实现类对象也可以对接口中的默认方法进行覆盖重写。

package com.pyi.blog;


public interface DefaultMethod {
    void abstractMethod();
    public default void defaultMethod(){//这是一个默认方法
        System.out.println("新增加的默认方法实现!");
    }
}

默认方法由default修饰,在接口中默认方法由固定的两个关键字public default修饰,其中public可省略,default不可以省略。

package com.pyi.blog;


public class DefaultMethodTestA implements DefaultMethod{
    @Override
    public void abstractMethod() {
        System.out.println("抽象方法A调用");
    }
}
package com.pyi.blog;


public class DefaultTest {
    public static void main(String[] args) {
        DefaultMethodTestA a=new DefaultMethodTestA();
        a.abstractMethod();
        a.defaultMethod();
    }
}

运行结果如下:

从上面的代码可以看出,在接口的实现类中并没有对接口中的默认方法进行覆盖重写,而接口的实现类对象可以直接调用其中的默认方法。

在接口的实现类中也可以对接口中的默认方法进行覆盖重写:

package com.pyi.blog;


public class DefaultMethodTestA implements DefaultMethod{
    @Override
    public void abstractMethod() {
        System.out.println("抽象方法A调用");
    }
    @Override
     public void defaultMethod(){
        System.out.println("实现类覆盖重写了接口中的默认方法!");
    }
}
package com.pyi.blog;


public class DefaultTest {
    public static void main(String[] args) {
        DefaultMethodTestA a=new DefaultMethodTestA();
        a.abstractMethod();
        a.defaultMethod();
    }
}

运行结果如下:


  • 接口中的静态方法

    接口中的静态方法与对象无关。它带有方法体。

package com.pyi.blog;

public interface StaticMethod {
    public static void staticMethod(){//这是一个静态方法
        System.out.println("静态方法被调用!");
    }
}
package com.pyi.blog;


public class StaticMethodTest implements  StaticMethod{

}
package com.pyi.blog;


public class StaticTest1 {
    public static void main(String[] args) {
        StaticMethodTest sta=new StaticMethodTest();
        sta.staticMethod();
    }
}

运行结果如下:

此时程序的进行发生了错误。因为静态方法是属于类的,而不是属于对象的,所以不能使用实现类的对象去调用接口中的静态方法。

用实现类名称去调用接口中的静态方法:

package com.pyi.blog;


public class StaticTest1 {
    public static void main(String[] args) {
        StaticMethodTest sta=new StaticMethodTest();
        StaticMethodTest.staticMethod();
    }
}

运行结果如下:

此时程序还是报错。其原因是一个类可以实现多个接口,当实现的接口中有重名的静态方法时,使用实现类的名称去调用该重名静态方法则会发生冲突,因此使用相应的接口名称来调用其中的静态方法。

package com.pyi.blog;


public class StaticTest1 {
    public static void main(String[] args) {
        StaticMethodTest sta=new StaticMethodTest();
        StaticMethod.staticMethod();
    }
}

运行结果如下:

此时程序运行成功!


  • 接口中的常量

    接口中可以定义成员变量,而这个成员变量必须是常量,必须使用public static final三个关键字修饰。接口中常量的定义格式为public static final 数据类型 常量名=数据值;。常量一旦赋值就不能被修改。接口中的常量的调用与接口中的静态方法相似,它不能使用实现类对象和实现类名称去调用,而只能通过接口名称调用。

    接口中的常量一定要给它赋值,即数据值一定要写出来,否则报错。如下图所示:

package com.pyi.blog;

public interface FinalInterface {
    public static final int num=10;//这是一个常量
}
package com.pyi.blog;


public class FinalInterfaceTest implements FinalInterface {
}
package com.pyi.blog;


public class FinalTest {
    public static void main(String[] args) {
        System.out.println(FinalInterface.num);
    }
}

运行结果如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/852040.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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