Java接口

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接口)