zoukankan      html  css  js  c++  java
  • 接口

    接口体中包含常量的声明(没有变量)和抽象方法两部分。

    常量是public, static,final型常量,方法是public,abstract方法。

    interface Printable{  

    public final static int Max = 100;  //等价写法:int Max = 100;  

    public abstract void add();  //等价写法:void add() 

     

    实现接口:

     

    1.类实现接口:接口由类来实现以便使用接口中的方法。

     

    class A implements Printable, Addable        //A类实现Printable, Addable接口。

     

    2.重写接口的方法:如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。且一定要用public修饰(否则降低了方法的访问权限)

     

    如果一个类声明实现了一个接口,但没有重写接口中的所有方法,那么这个类必须是抽象类,也就是说抽象类既可以重写接口的方法也可以直接拥有接口的方法

    1.接口是一种引用类型,可以等同看作类。修饰符 interface 接口名
    2.接口中只能出现常量和抽象方法
    3.接口其实是一个特殊的抽象类,特殊在接口是完全抽象的
    4.接口中没有构造方法,接口也无法实例化
    5.接口和接口之间可以多继承
    6.一个类可以实现多个接口,这里的实现等同于继承
    7.一个非抽象的类实现接口,需要将接口中所有方法实现/重写/覆盖

    package study1;
    
    public interface A{
        //常量都是public static final,可省略
        public static final String sucess = "SUCCESS";
        public static final double pi = 3.14;
        byte max_value = 127;
        //接口中所有的抽象方法都是public abstract,
        public abstract void m1();
        //接口方法不能有方法体,如 void m22(){};会提示interface abstract methods cannot have body
        
        void m2();
    
        interface B{
            void m1();
        }
        interface C{
            void m2();
        }
        interface D{
            void m3();
        }
        interface E extends B,C,D{
            void m4();
        }
        /*
        extends只能单继承,implements可以多继承
        如果实现的接口有多个方法,必须覆盖接口中的方法。
        */
        class MyClass implements B,C{
            public void m2(){}
            public void m1(){}
        }
        class MyClass2 implements E{
            
            public void m1(){};
            public void m2(){};
            public void m3(){};
            public void m4(){};
        }
    }
    

    接口的作用

    #java
    package date818;
    
    /**
     * 接口的作用:
     * 1。可以使项目分离,所有层都面向接口开发,提高开发效率
     * 2。接口是代码和代码之间的耦合度降低。变得可插拔,可以随意切换。
    *  3。接口和抽象类都能完成某个功能,优先选择接口,因为接口可以多实现,多继承。并且一个类除了接口之外,还可以继承其他类
     */
    public interface CustomerService {
        //定义一个推出系统的方法
        void logout();
    }
    
    package date818;
    //接口实现类1
    public class CustomerServierImpl implements CustomerService {
        public void logout(){
            System.out.println("成功退出系统");
        }
    }
    
    package date818;
    //接口实现类2
    public class CustomerServiceImpl2 implements CustomerService{
        public void logout(){
            System.out.println("hello world");
        }
    }
    
    package date818;
    
    public class TestCustomer {
        public static void main(String[] args){
            //需要执行CustomerServiceImpl和CustomerImpl2接口实现类中的logout方法
            //以下程序面向接口调用
            CustomerService cs = new CustomerServierImpl();//多态。父类型引用指向子类型对象
            //调用
            cs.logout();
            CustomerService cs2 = new CustomerServiceImpl2();
            cs2.logout();
        }
    }

     

  • 相关阅读:
    hiveserver2 with kerberos authentication
    python Basic usage
    python Quicksort demo
    Python HeapSort
    mrunit for wordcount demo
    CCDH证书
    Hadoop question list
    Hadoop Yarn core concepts
    Hadoop Resource
    Hadoop could not find or load main class
  • 原文地址:https://www.cnblogs.com/sy130908/p/11411651.html
Copyright © 2011-2022 走看看