zoukankan      html  css  js  c++  java
  • java接口定义和作用

    接口语法

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

    #java
    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();
        }
    }
    

    #java
    //定义接口
    package date818;
    
    public interface Engine {
        //所有发动机都可以通过这个接口启动
        void start();
    }
    //定义实现接口的类
    package date818;
    
    public class Honda implements Engine{
        public void start(){
            System.out.println("本田启动");
        }
    }
    package date818;
    
    public class Ymaha implements Engine{
        public void start(){
            System.out.println("雅马哈启动");
        }
    }
    //定义生产汽车的类
    package date818;
    
    public class Car {
        //面向接口编程,不能将类实例化
        /**
         * 引用接口定义一个属性e,相当于
         * String name;
         * Integer age;
         * 类里定义的变量是成员变量;方法里定义的变量是局部变量。
         */
        Engine e ;//成员变量e
    
        Car(Engine e){
            //定义构造方法,把局部变量e赋值给成员变量
            this.e=e;
        }
        //对外提供的测试方法
        public void testEngine(){
            //成员变量e
            e.start();
        }
    }
    //定义测试类
    package date818;
    
    public class TestCar {
        public static void main(String[] args){
            //生产引擎
            Engine e = new Ymaha();
            //根据构造方法传入参数生产汽车
            Car c = new Car(e);
            //测试引擎
            c.testEngine();
    
            c.e = new Honda();//已经定义了一个实例,直接对实例的参数修改即可
            c.testEngine();
        }
    }
    
    

    雅马哈启动
    本田启动

  • 相关阅读:
    StratifiedKFold实现分层抽样
    Windows 平台下 pip 下载whl第三方库
    Adversarial Training Methods For Semi-Supervised Text Classification 虚拟对抗训练思路指引
    MNIST 数据加载
    delphi:raise 语句: 抛出异常 (转载)
    delphi:创建对象时,Application、Self、nil三者的区别(转载)
    delphi:nil、null、UnAssigned区别(转载)
    delphi:TMS安装(转载)
    delphi: MSComm的属性
    delphi:第三方控件的安装与删除(转载)
  • 原文地址:https://www.cnblogs.com/csj2018/p/9515106.html
Copyright © 2011-2022 走看看