Java8新特性(四)------接口中可以定义方法体

原创 2016年05月30日 16:12:21

 Java8比起以前的版本存在很大的变化,我们知道在之前的版本中接口只能是定义抽象的方法,是不能定义实现的,但是在java8环境下,这个不可能已经变得可能。下面我们通过例子一步一步的来讲解下java8的用法。

 定义静态方法

  在接口中定义的静态方法,不是抽象的,具体实现的,可以直接使用接口名称调用。

/**
 * Created by xiaona on 2016/5/30.
 */
public interface TestMethod {
    public static void method() {
        /**
         * 1、定义一个静态的带有方法体的方法
         * 2、接口不能创建对象,调用静态方法不需要对象
         * 3、接口名调用
         */
        System.out.println("接口中静态方法");

    }

 调用:

  public static void main( String[] args ) {
        /**
         * 接口名称,直接调用---TestMethod(接口名称)
         */
        TestMethod.method();

 定义普通方法

  在接口中不仅仅是可以定义静态方法,还可以进行普通方法的定义,不过不是抽象,java8中,可以使用关键字default

//定义接口中默认方法

    /**
     * 不同于静态方法,默认方法是一个非静态方法
     * 对于非静态方法,只能通过对象进行调用
     * 但是接口是不能创建对象的名故而我们需要子类来实现接口
     */
    public default void  methodDefault(){
        System.out.println();
    }
}

  调用:

//        使用子类对象,调用接口中的默认方法
        Inter8Impl inter8 = new Inter8Impl();
        inter8.methodDefault();

//        使用多态的特点,接口指向自己的实现类,调用对应的方法
        TestMethod i88=new Inter8Impl();
        i88.methodDefault();
    }

  此外,值得注意的是:面向对象中,java只是支持单继承,不支持多继承,一个类只能继承一个类,

  (1)如果多个接口定义了同样的静态方法,

          即使存在实现类,同时实现多个接口,仍然是不可使用实现类名调用接口的方法

  (2)如果多个接口定义了同样的默认方法

         实现类实现多个接口时,必须重写掉默认方法,否则编译失败。

  在接口中可以定义实现的方法体是java8的一大特性,可以定义多个静态或者默认的方法,静态必须加上static,默认方法必须加上default关键字。

版权声明:本文为博主原创文章,未经博主允许不得转载。

java8的接口新特性(可以有方法体的接口)

1.以前java的接口中定义的方法不可以有方法体,这样试用起来,有时候听不方便的,当有多个类实现了想同的接口,接口中某一些方法的实现体可能都是一样的时候,这样无疑浪费了很多时间,在写重复的代码(或者说...
  • vrinux
  • vrinux
  • 2015年11月13日 11:11
  • 2452

JAVA 8新特性 允许接口定义非抽象方法 快速入门案例

JavaSE8.0出来也蛮久了 网上也蛮多案例和教程 但大多数都写的比较复杂  而且更新的新特性也不是很齐全。 本案例是根据甲骨文官方的Demo进行修改的 授人以鱼不如授人以渔,学习方式其...
  • austral
  • austral
  • 2016年11月29日 23:51
  • 845

java8新特性-接口定义增强

Java8之前java接口由全局常量和抽象方法所做组成,java8及以后的接口定义可以使用default,static定义。          例如:一个接口随着时间的推移,接口下面有2000个实现...

Java8新特性 - 默认接口方法

一. 引入默认接口方法的背景   java8可以看做是java版本更新迭代过程中变化最大的一个版本(与时俱进,方能不灭,我们应该感到欣慰),但是经过这么多年的发展和迭代,java的源码俨然已...

JAVA8新特性(访问接口的默认方法)

访问接口的默认方法还记得第一节中的formula例子么,接口Formula定义了一个默认方法sqrt可以直接被formula的实例包括匿名对象访问到,但是在lambda表达式中这个是不行的。 Lam...

java8新特性 (λ、stream 与 默认接口方法)

1.lambda λ表达式本质上是一个匿名方法,用来方便地实现函数接口。也就是说,λ表达式主要用于替换以前广泛使用的内部匿名类。  让我们来看下面这个例子:     public int add(in...

Java8新特性第2章(接口默认方法)

在Java中一个接口一旦发布就已经被定型,除非我们能够一次性的更新所有该接口的实现,否者在接口的添加新方法将会破坏现有接口的实现。默认方法就是为了解决这一问题的,这样接口在发布之后依然能够继续演化。...

Java8新特性——接口的默认方法(扩展方法)

今天是高考的日子,是大四师兄师姐答辩毕业的日子。一代又来,一代又去。好久没写博客,借此特殊日子整理一下前不久学java8新特性时写的代码,留下痕迹。(本博客的代码根据 java8新特性教程 学习整理,...

Java8新特性Optional、接口中的默认方法与静态方法

Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这...

Java 8 新特性:接口的静态方法和默认方法

Java 8 新特性:接口增强 1.接口增强 2.默认方法(或扩展方法) 3.接口的静态方法 4.接口增强示例 5.为什么不能用默认方法来重载equals,hashCode和toString?...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java8新特性(四)------接口中可以定义方法体
举报原因:
原因补充:

(最多只允许输入30个字)