美文网首页
Java接口

Java接口

作者: 浮桥小麦 | 来源:发表于2017-06-08 15:42 被阅读33次
    Pragma mark — NO.1 基本概念
    public class Main {
       public static void main(String[] args) {
            Demo d = new Demo();
            d.method();
          //Inter i = new Inter();接口是不能实例化的
            //因为接口中所有方法都是抽象方法,如果可以实例化接口的话
            //就可以调用抽象方法,调用抽象方法是无意义的
    
            //按照多态的方式实例化
            Inter i = new Demo();//父类引用指向子类对象
            i.method();//编译看左边,运行看右边
            //接口是用来实现的,不是用来继承的,但其实也是一个父类
        }
    }
    /*
    * A:接口概述:
    * 从狭义的角度讲就是指java中的interface
    * 从广义的角度讲对外提供规则的都是接口
    * B:接口特点:
    * a:接口用关键字interface表示
    * interface 接口名 {}
    *
    * b:类实现接口用implements表示
    * class 类名 implements 接口名 {}
    *
    * c:接口不能实例化
    * 那么,接口如何实例化?
    * 按照多态的方式来实例化。
    *
    * d:接口的子类
    * 可以是抽象类,但意义不大
    * 可以是具体类,要重写接口中的所有抽象方法(推荐)
    **/
    
    //定义一个接口
    interface  Inter {
        //接口中的方法都是抽象的
        public abstract  void method();
    }
    //类实现接口
    class  Demo implements Inter {
          //类继承自接口,也要重写这个接口中的抽象方法
        public void method(){
            System.out.println("类实现接口");
        }
    
    
    
    Pragma mark — NO.2 接口的成员特点
    public class Jiekoulei1 {
    
        public static void main (String[] args){
    
        Demo1 d = new Demo1();
        d.print();
    
        }
    }
    /*
    * 成员变量:只能是常量,并且是静态公共的
    * 默认修饰符:public static final
    * 建议:修饰符自己手动给出
    *
    * 构造方法:接口没有构造方法
    * 成员方法:只能是抽象方法
    * 默认修饰符:public abstract
    * 建议:自己手动给出
    **/
    
    //接口
    interface Inter1 {
        //接口中定义的变量都是常量,即使你不加这个final,自动加上的,
        // 所以在实现类中不能去修改值
        //默认修饰成员变量的修饰符有三个哦
        int num = 10;
    
        //public Inter1 (){}接口中没有构造方法
    
        //public void method(){}:接口中不能定义非抽象方法
    
    }
    
    //类实现接口
    class  Demo1 implements Inter1 {
    
        public  void print(){
            //我们可以拿到接口中定义的成员变量,但是我们无法修改其中的值
           // num = 20;
    
            System.out.println(num);
        }
    
        //对于Demo1来说,有自己的构造方法,但是为什么Inte1没有呢
        public Demo1 (){
            super();//这个super并不是调用的Inter1中的构造,因为本身也没有
            //而是调用的Object的构造,因为我们Demo1类实际上是继承自Object的
    
        }
    
    }
    
    Pragma mark — NO.3 类与类/类与接口/接口与接口
    public class Jiekoulei2 {
        public static void main (String[] args){
            Test t = new Test();
        t.printA();
        t.printB();
        t.printC();
    
        }
    
    }
    /*
    A:类与类:
    继承关系
    只能单继承,可以多层继承
    B:类与接口
    实现关系,可以单实现,也可以多实现
    并且还可以在继承的同时,实现多个接口
    C:接口与接口
    继承关系,可以单继承,也可以多继承
    * */
    
    //写几个接口
    interface  InterA {
    
        public  void printA();
    }
    
    interface  InterB {
    
        public  void printB();
    }
    
    interface  InterC {
    
        public  void printC();
    }
    //接口和接口之间是继承关系并且可以多继承
    interface  InterD extends InterB, InterC{
    
    }
    
    //类来实现接口
    class  Test implements InterA, InterB, InterC {
    
        public void printA(){
            System.out.println("这是A接口中的方法");
        }
    
        public void printB(){
            System.out.println("这是B接口中的方法");
        }
    
        public void printC(){
            System.out.println("这是C接口中的方法");
        }
    }
    

    相关文章

      网友评论

          本文标题:Java接口

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