• Difference Between static and default methods in interface


    I was learning through interfaces when I noticed that you can now define static and default methods in an interface.

    public interface interfacesample2 {
        public static void method() {
            System.out.println("hello world");
        }
    
        public default void menthod3() {
            System.out.println("default print");
        }
    }
    

    Kindly explain the difference of the two and also if there's an example of when we would use this would be nice. A little confused on Interfaces.


    Differences between static and default methods in Java 8:

    1) Default methods can be overriden in implementing class, while static cannot.

    2) Static method belongs only to Interface class, so you can only invoke static method on Interface class, not on class implementing this Interface, see:

    public interface MyInterface {
        default void defaultMethod(){
            System.out.println("Default");
        }
    
        static void staticMethod(){
            System.out.println("Static");
        }    
    }
    
    public class MyClass implements MyInterface {
    
        public static void main(String[] args) {
    
            MyClass.staticMethod(); //not valid - static method may be invoked on containing interface class only
            MyInterface.staticMethod(); //valid
        }
    }
    

    3) Both class and interface can have static methods with same names, and neither overrides other!

    public class MyClass implements MyInterface {
    
        public static void main(String[] args) {
    
            //both are valid and have different behaviour
            MyClass.staticMethod();
            MyInterface.staticMethod();
        }
    
        static void staticMethod(){
            System.out.println("another static..");
        }
    }
  • 相关阅读:
    2013 新春快乐
    石头剪刀布游戏
    【MTK】MTK 报错集锦
    爱上双节棍男生的十五个理由
    Jni下NDK开发的bug问题汇总
    NDK中c语言logcat环境的搭建
    Android中Alertdialog对话框点击消失?
    Android上关于cmwap/cmnet网络切换的疑惑?
    Jni调用方法产生java.lang.UnsatisfiedLinkError错误
    android.os.NetworkOnMainThreadException问题
  • 原文地址:https://www.cnblogs.com/zhuyeshen/p/11505272.html
Copyright © 2020-2023  润新知