Java关键字default

default常用于接口中,从它的中文意思行来看,大概能猜个差不多,我们本来写Java接口的时候,是不能有方法体的函数,就类似于C++中的虚函数,default关键字在接口中修饰方法时,方法可以有方法体,来看一个例子。

  1. public interface Default {

  2.  
  3. default public void method(){

  4. System.out.println("method in interface");

  5. }

  6. }

  一个接口,method方法在使用关键字default后可以有方法体了。

  1. public class DefaultImpl implements Default {

  2.  
  3. @Override

  4. public void method() {

  5. System.out.println("method in Class");

  6. }

  7.  
  8. public static void main(String[] args){

  9. Default d = new DefaultImpl();

  10. d.method();

  11. }

  12. }

  DefaultImpl实现了Default接口,最终运行结果:

  而此时如果Default接口再加一个方法呢,如果这个方法没有default关键字修饰,则DefaultImpl没有实现这个方法就会报错,这就体现了default关键字的作用。我们继续修改Default接口。

 Default接口如下:

  1. public interface Default {

  2.  
  3. default public void method(){

  4. System.out.println("method in interface");

  5. }

  6.  
  7. default public void doSomeThing(){

  8. System.out.println("do something in interface");

  9. }

  10. }

  DefaultImpl并没有重写doSomeThing方法

  1. public class DefaultImpl implements Default {

  2.  
  3. @Override

  4. public void method() {

  5. System.out.println("method in Class");

  6. }

  7.  
  8. public static void main(String[] args){

  9. Default d = new DefaultImpl();

  10. d.method();

  11. d.doSomeThing();

  12. }

  13. }

  运行结果如下:

  运行结果符合Java多态的特性,default关键字可以让接口中的方法可以有默认的函数体,当一个类实现这个接口时,可以不用去实现这个方法,当然,这个类若实现这个方法,就等于子类覆盖了这个方法,最终运行结果符合Java多态特性。

原文地址:https://blog.csdn.net/MOVIE14/article/details/76559479

猜你喜欢

转载自blog.csdn.net/qq_33541802/article/details/82563830