package com.company;
public interface Default {
//static修饰的方法属于Default类,可以直接通过类调用,
static void Showstatic(){
System.out.println("this is a static method");
}
/**
* default修饰的方法类似于c++的虚函数,可以通过对象的引用调用。
*为什么要有这个关键字?
* 因为再java8之前,接口不能有方法体,这种情况下,如果要修改接口,则要修改所有实现该接口的实现类,有了
* Default关键子后,可以再接口里写方法体,解决这个问题。
*/
default void Showdefault(){
System.out.println("thid is a default method");
}
void Sayhi();
}
package com.company;
public class DefaultImpl implements Default {
/**
* static方法属于类,不需要重写;
* default方法再接口里有方法体,不需要重写
*/
@Override
public void Sayhi() {
System.out.println("hi hi hi");
}
}
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//静态方法可以直接通过类调用
Default.Showstatic();
Default d=new DefaultImpl();
d.Showdefault();
d.Sayhi();
}