个性化阅读
专注于IT技术分析

Java默认方法

本文概述

Java提供了一种在接口内部创建默认方法的功能。在接口内部定义并带有默认标记的方法称为默认方法。这些方法是非抽象方法。

Java默认方法示例

在以下示例中, Sayable是一个功能接口, 其中包含默认值和抽象方法。默认方法的概念用于定义具有默认实现的方法。你还可以覆盖默认方法, 以提供该方法的更具体的实现。

让我们看一个简单的

interface Sayable{
	// Default method 
	default void say(){
		System.out.println("Hello, this is default method");
	}
	// Abstract method
	void sayMore(String msg);
}
public class DefaultMethods implements Sayable{
	public void sayMore(String msg){		// implementing abstract method 
		System.out.println(msg);
	}
	public static void main(String[] args) {
		DefaultMethods dm = new DefaultMethods();
		dm.say();	// calling default method
		dm.sayMore("Work is worship");	// calling abstract method

	}
}

输出:

Hello, this is default method
Work is worship

Java 8接口中的静态方法

你还可以在接口内部定义静态方法。静态方法用于定义实用程序方法。下面的例子说明, 如何在接口中实现静态方法?

interface Sayable{  
    // default method  
    default void say(){  
        System.out.println("Hello, this is default method");  
    }  
    // Abstract method  
    void sayMore(String msg);  
    // static method  
    static void sayLouder(String msg){  
        System.out.println(msg);  
    }  
}  
public class DefaultMethods implements Sayable{  
    public void sayMore(String msg){     // implementing abstract method  
        System.out.println(msg);  
    }  
    public static void main(String[] args) {  
        DefaultMethods dm = new DefaultMethods();  
        dm.say();                       // calling default method  
        dm.sayMore("Work is worship");      // calling abstract method  
        Sayable.sayLouder("Helloooo...");   // calling static method  
    }  
}

输出:

Hello there
Work is worship
Helloooo...

抽象类与Java 8接口

在接口中具有默认和静态方法之后, 我们考虑Java中抽象类的需求。接口和抽象类几乎相似, 除了可以在抽象类中创建构造函数, 而不能在接口中创建构造函数。

abstract class AbstractClass{  
    public AbstractClass() {        // constructor  
        System.out.println("You can create constructor in abstract class");  
    }  
    abstract int add(int a, int b); // abstract method  
    int sub(int a, int b){      // non-abstract method  
        return a-b;  
    }  
    static int multiply(int a, int b){  // static method  
        return a*b;  
    }  
}  
public class AbstractTest extends AbstractClass{  
    public int add(int a, int b){        // implementing abstract method  
        return a+b;  
    }  
    public static void main(String[] args) {  
        AbstractTest a = new AbstractTest();  
        int result1 = a.add(20, 10);    // calling abstract method  
        int result2 = a.sub(20, 10);    // calling non-abstract method  
        int result3 = AbstractClass.multiply(20, 10); // calling static method  
        System.out.println("Addition: "+result1);  
        System.out.println("Substraction: "+result2);  
        System.out.println("Multiplication: "+result3);  
    }  
}

输出:

You can create constructor in abstract class
Addition: 30
Substraction: 10
Multiplication: 200
赞(0)
未经允许不得转载:srcmini » Java默认方法

评论 抢沙发

评论前必须登录!