当前位置:网站首页>Composition of interface

Composition of interface

2022-07-05 22:54:00 Anny Linlin

One 、 The interface consists of :

         Constant public static final modification

         Abstract method public abstract modification

         The default method (Java8)

         Static methods (Java9)

         Private method (Java9)

Two 、 Default method in interface

The default method format definition in the interface :

public default return type Method name ( parameter list ){}

Example :public default void show3(){}

matters needing attention : The default method in the interface is not an abstract method , So don't force it to be rewritten , But it can be rewritten , Remove keywords when rewriting default That's it .public It can be omitted , however default Cannot be omitted . 

When to use , When the newly created class implements the methods in the interface , When it comes to implementing new methods , Add a default method to the interface . The newly created class can override this method .

The code is slightly …………

3、 ... and 、 Static methods in the interface

Define the method format in the interface :public static return type Method name ( parameter list ){}

Example :public static void show()

matters needing attention : Static methods can only be called by interface name , Cannot call... By implementing class name or object name .public It can be omitted , however static Don't omit .

package staticFunction;

public interface Inter {
    void show();
    default void method(){
        System.out.println("default");
    }
    static void test(){
        System.out.println("test");
    }
}
package staticFunction;

public class InterImpl implements Inter{

    @Override
    public void show() {
        System.out.println("InterImpl show");
    }

    @Override
    public void method() {
        System.out.println("InterImpl method");
    }

    //test Static methods cannot be overridden in implementation classes 

}
package staticFunction;
/*
    1、 Define an interface Inter, There are three ways : One is the abstract method , One is the default method , One is the static method .
        void show();
        default void method();
        static void test();
    2、 Define the implementation class of an interface 
        InterImpl
    3、 Define a test class 
         Create objects in a polymorphic way in the main method and use 
     summary : Static methods in interfaces can only use interface calls , Implementation classes cannot override , Unable to call .
 */
public class InterDemo {

    public static void main(String[] args) {
        Inter inter = new InterImpl();

        inter.method();
        inter.show();
        //inter.test();    You cannot use an implementation class to call a method in an interface 
        Inter.test(); // Use the interface to call the static method of the interface 
    }
}

Four 、 Static methods in the interface

Java9 Private method with method body is added in , This is actually java8 The foreshadowing is buried in :java8 It is allowed to define the default method and static method with method body in the interface , This will cause a problem : When two static methods or private methods contain the same piece of code , The program must consider extracting this code into a method , And this common method cannot be known by others , So you need to hide it with private , This is a java9 The necessity of increasing private land .

The format of private method definition in interface :

package privateFunction;

public interface Inter {
    default void show1(){
        System.out.println("show1 Start ");
//        System.out.println(" I love my country !");
//        System.out.println(" I love the capital Beijing !");
        show();
        //method(); // Call static private methods 
        System.out.println("show1 end !");
    }

    default void show2(){
        System.out.println("show2 Start ");
//        System.out.println(" I love my country !");
//        System.out.println(" I love the capital Beijing !");
        show();
        //method(); // Call static private methods 
        System.out.println("show2 end !");
    }

    private void show(){
        System.out.println(" I love my country !");
        System.out.println(" I love the capital Beijing !");
    }

    static void method1(){
        System.out.println("method1 Start ");
//        System.out.println(" I love my country !");
//        System.out.println(" I love the capital Beijing !");
        //show();// Non static methods cannot be used 
        method();
        System.out.println("method1 end !");
    }

    static void method2(){
        System.out.println("method2 Start ");
//        System.out.println(" I love my country !");
//        System.out.println(" I love the capital Beijing !");
        //show();// Non static methods cannot be used 
        method();
        System.out.println("method2 end !");

    }

    static  void method(){
        System.out.println(" I love my country !");
        System.out.println(" I love the capital Beijing !");
    }


}
package privateFunction;

public class InterImpl implements Inter{
    @Override
    public void show1() {
        Inter.super.show1();
    }

    @Override
    public void show2() {
        Inter.super.show2();
    }


}
package privateFunction;
/*
    1、 Define an interface Inter, There are four ways : Two are the default methods , Two are static methods .
        default void show1()
        default void show2()
        static void method1()
        static void method2()
    2、 Define an implementation class of the interface 
        InterImpl
    3、 Define test classes :
        InterDemo
         Create objects in a polymorphic way in the main method and use 
     summary : Static methods in the interface can only call private static methods , Non static methods can call either private static methods or default methods 
 */
public class InterDemo {
    public static void main(String[] args) {
        Inter inter = new InterImpl();
        inter.show1();
        inter.show2();

        Inter.method1();
        Inter.method2();
    }
}

原网站

版权声明
本文为[Anny Linlin]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140349328258.html