zoukankan      html  css  js  c++  java
  • 1-12接口

    接口的概述

    电脑上面的主板有很多接口,比如内存条的接口,有了这个接口,可以插入多个内存条,主板和内存条可能不是同一家生产厂商,但是两种物体却能结合到一起,正是因为这个接口的存在。只要厂家遵循这个接口,主板和内存条就可以随意更换,提高了可插拔性,接口其实也是体现着一种规范。
    在java语言里面使用interface来声明一个接口,接口其实是一个特殊的抽象类,在接口里面的方法全部都是抽象的。
    关于接口,有几个需要注意的地方:

    接口中只能出现常量和抽象方法
    接口里面没有构造方法,无法创建接口的对象
    接口和接口之间支持多继承,即一个接口可以有多个父接口
    一个类可以实现多个接口,即一个类可以有多个父接口
    一个类如果实现了接口,那么这个类需要重写接口中所有的抽象方法(建议),如果不重写则这个类需要声明为抽象类(不建议)

    public interface A{
    
        //常量(必须用public static final修饰)
        public static final double PI = 3.14;
    
        //public static final是可以省略的.
        //double PI = 3.14;
    
    
        //抽象方法(接口中所有的抽象方法都是public abstract)
        public abstract void m1();
    
        //public abstract是可以省略的.
        void m2();
    
    }
    
    interface B{
        void m1();
    }
    
    interface C{
        void m2();
    }
    
    interface D{
        void m3();
    }
    
    interface E extends B,C,D{
        void m4();
    }
    
    //implements是实现的意思,是一个关键字.
    //implements和extends意义相同。
    class MyClass implements B,C{
        public void m1(){}
        public void m2(){}
    }
    

    接口的作用

    可以使项目分层,都面向接口开发,提高开发效率
    降低了代码之间的耦合度,提高了代码的可插拔性
    开发中尽量使用接口,少用抽象类,一个类可以实现多个接口,却只能继承一个父类

    将之前的james开汽车的例子修改一下

    将Car定义为接口

    interface Car {
        public void run();
    }
    

    创建Benz和BMW类去实现这个接口

    class Benz implements Car {
        public void run(){
            System.out.println("奔驰汽车在跑");
        }
    }
    
    class BMW implements Car {
        public void run(){
            System.out.println("宝马汽车在跑");
        }
    }
    

    Person类不变

    class Person {
        public void drive(Car c){
            c.run();
        }
    }
    

    测试类不变

    public class Test01 {
        public static void main(String[] args) {
            Person james = new Person();
            Benz bc = new Benz();
            //james.drive(bc);
            //BMW bm = new BMW();
            james.drive(bc);
        }
    }
    
  • 相关阅读:
    java DES转C#DES加密解密
    PIE SDK影像格式转换
    PIE SDK位深转换
    PIE SDK存储格式转换
    PIE SDK栅格生成等值线、面
    PIE SDK反距离权重插值算法
    PIE SDK克里金插值法
    PIE SDK热力图
    PIE SDK Alpha通道数据渲染
    PIE SDK 多数据源的复合数据集加载
  • 原文地址:https://www.cnblogs.com/superfly123/p/10443791.html
Copyright © 2011-2022 走看看