美文网首页
java接口

java接口

作者: 辛小二 | 来源:发表于2017-07-11 09:48 被阅读39次
    
    
    /*********************************什么是接口*************************/
    //1、硬件接口:指的是两个硬件设备之间的连接方式,硬件接口既包括物理上的接口,还包括逻辑上的数据传送协议
    //2、软件接口:程序代码,特殊的类,表示一种范围,(java中)是具有的N个方法的特征集合
    //eg:在封装之前 显示器封装了很多电子元件 最终向外报漏的数据交互的孔-->接口 (为了实现设备和设备之间的桥梁)
    // 在java中,接口表示一种规范的/约束/要求实现者必须遵循该规范:用来约束使用者该怎么做
    //硬件当中的USB就是一个接口的抽象概念,
    //定义:接口只是定义了类的应当遵循的规范,却不关心这些类的内部数据和其功能的实现细节,站在程序的角度上说,接口只规定了类必须好提供的方法,从而分离了规范和实现,增强了系统的拓展性和可维护性。
    /*********************************面向对象的编程*************************/
    //接口和实现类体现了真正的多态
    /*********************************java中的接口*************************/
    //专家:多个抽象类的抽象就是接口 (其实接口就是抽象类的一种 在.java文件反编译的class文件当中我们可以看到 interface IWalkable == abstract interface IWalkable)
    //在java中最小的程序单元就是类 接口就是一个特殊的类 、java中的接口表示规范,用于定义一组抽象方法,要求实现类必须实现该方法并提供方法实现
    //定义类语句:[pubilc] class 类名{}
    //定义类语句:[pubilc] interface 接口名{};在这里还没考虑接口的父接口等等**
    //接口起名问题:表示具有某些能力的,有人习惯以able/handler结尾   有的公司或者个人习惯以i打头,表示接口。
    /*********************************java中的接口需要的成员*************************/
    //1、接口中没有构造器 ,推论L接口是不能new的 (不能创建对象)  接口中不能定义普通方法
    //2、接口中定义的成员变量 实质是全局静态常量 默认是public static final 来修饰
    //3、接口中定义的方法都是公共的抽象方法 默认使用public abstract 来修饰方法 (就像在下面的 IWalkable 中  里面void walk();就等同于 public abstract void walk();    )
    //4、接口中的定义内部类 都是公共的静态内部类  使用public static 来修饰内部类
    
    /*********************************常量接口*************************/
    // 常量接口:有人喜欢使用接口来封装多个常量信息 我们称之为常量接口 其目和常量类相同(不推荐)
    // 标志接口:接口中没有任何成员,就仅仅是一个接口的定义,就是一个标志,其他的类实现该接口,就属于该家族,我们可以通过第三方代码赋值该接口实现类特殊的功能(不推荐)
    //咱们使用的方法 主要包含了抽象方法
    /*********************************接口特点*************************/
    //接口不存在构造方法 也不能显示定义构造器 不能实例化 不能new
    //接口只能继承接口 不能继承类 且接口支持多继承(类是单继承关系)    ---->  [修饰符]interface 接口名字 extends 接口1 接口2
    //接口里面的方法全是抽象的 默认修饰符是 public abstract
    //接口里面的字段全是全局静态常量 默认修饰符是 public static fianl
    //接口里面内部类全是公共的静态的,默认修饰符是public static
    
    /*********************************接口的实现者就是:实现类*************************/
    //接口仅仅只是定义了某些事物应有的功能,但是并没有提供实现  此时,我们需要提供实现类去实现接口 并覆盖 接口中的方法 从而实现类接口定义的功能
    /*********************************类实现接口的语法 *************************/
    //[修饰符] class 类名 extends 父类 implement 接口1 接口2 {}   (语法:一个类可以实现多个接口,从而祢补了类的单继承关系)
    
    
    /*********************************继承关系*************************/
    //类和类之间存在继承关系:使用extends来表示
    //接口和接口之间只能是继承关系:使用extends来表示
    //接口和实现类之间只能是实现关系(继承关系):使用implements来表示  (接口是实现类的父类,)
        //-----> 接口变量 == 创建实现类对象 (体现了多态思想)
        // 接口和实现类的多态关系才是我们今后见的最多的
        // 下方定义类Cat要是想实现接口当中的方法就必须把 walk使用public修饰符(那是因为接口是一个抽象的父类 这个父类所有定义的方法都是默认public的 所以子类实现的时候 也需要添加public修饰符)
    
    
    
    
    
    interface IWalkable{
        void walk();
    //    interface ABC();
    //    IWalkable(); 不能显示构造器
    }
    interface ISwimable {
    
    }
    //猫
     class  Cat implements IWalkable{
        public void walk(){
            System.out.println("猫");
        }
    
    }
    class  dog  implements IWalkable{
        public void walk(){
            System.out.println("狗");
        }
    }
    //鱼   一个接口对多个类
    class Fish extends Animal implements ISwimable,IWalkable{
    
       public void walk(){
    
       }
    
        public void swim(){
            System.out.println("鱼");
        }
    }
    class Animal{
    
    }
    interface Amph extends IWalkable,ISwimable{
    
    
    }
    
    public class Main {
        public static void main(String[] args){
            System.out.println("aa");
    //        new IWalkable();  不能new 接口
    //        Cat c = new Cat();/*唾弃 这种写法没意义 要实现面向接口的编程 请看下面的代码*/
    //        c.walk();
            IWalkable w = new Cat();/*实现面向接口的编程 实现子类的方法 所以需要父类的指针指向子类的对象 从而实现子类的方法 进行输出*/
            IWalkable i = new dog();
            ISwimable s = new Fish();
            Fish fish = new Fish();
            fish.swim();
            w.walk();
            i.walk();
    
    
        }
    }
    

    相关文章

      网友评论

          本文标题:java接口

          本文链接:https://www.haomeiwen.com/subject/xcpphxtx.html