美文网首页
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