美文网首页
面向对象--interface

面向对象--interface

作者: 关先生的IT博客 | 来源:发表于2016-10-10 02:07 被阅读0次

    接口

    java只支持单继承,例如猪是食物,猪还是动物,我要完成这个多继承的关系, 只时候,我们需要用到接口

    • 接口(interface)是抽象方法和常量值的定义的集合
    • 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现.
    • 接口定义举例:

    public interface Runner { public static final int id = 1; public void start() ; //接口中不用谢abstract,但是都是方法. public void run() ; public void stop(); }//为什么要定义成public static final?C++中多继承关系中存在多个父类对象中的相同的成员变量,容易出现问题,java中要去避免这种情况,放到static中.


    接口特性

    • 接口可以多重实现
    • 接口中声明的属性默认是public static final的,也只能是这三个.
    • 接口中只能定义抽象的方法,这些方法默认是public的,也只能是public的.(为了避免C++中出现的问题)
    • 接口可以继承其他的接口,并添加新的属性和抽象方法.
    • 多个无关的类可以实现同一个接口
    • 一个类可以实现多个无关的接口
    • 与继承关系类似,接口与实现类之间存在多态性.
    • 定义Java类的语法格式

    接口举例


    interface Singer { public void sing(); public void sleep(); } //定义一个能唱歌的东西,不同种类的不确定,所以用抽象 class Student implements Singer { //因为以上用的是interface,不能extends private String name; Student(String name) { this.name = name ; } public void study() { System.out.println("studying"); } public String getName() (return name;) public void sing() { System.out.println("student is singing"); } public void sleep() { System.out.println("student is sleeping"); } } //存在继承关系,存在重写,如果在存在父类对子类对象的应用,则为多态.


    interface Singer { public void sing(); public void sleep(); } //定义一个能唱歌的东西,不同种类的不确定,所以用抽象 interface Painter { public void paint(); public void eat(); } class Student implements Singer { //因为以上用的是interface,不能extends private String name; Student(String name) { this.name = name ;} public void study () {System.out.println("studying"):} public String getName() (return name;) public void sing() { System.out.println("student is singing"); } public void sleep() { System.out.println("student is sleeping"); }
    class Teacher implements Singer,Painter{}
    //所有的方法要全部实现,重写.
    存在多态关系的时候,所有方法的重写在code segment里,而字符串变量和静态变量储存在data segment里面.实现动态引用(为一个函数指针C++);
    这个部分可以看作多态的延伸.
    每个接口对应的是部分的方法.
    f(singer s) {
    s.sing();
    } //注意这个时候这个方法,无论是调用student 还是tercher,都可以.但是要重写这个方法.多态的实现.所以接口是那个抽象的类,多重继承,也没有C++的毛病.


    使用接口我们实现了多继承性,实现多继承性,打好多态的基础.无论属性再多,永远要记得,继承性.重写,按部就班.

    Interface Comparable

    compareto 比较对象的大小.输出一个返回值.
    我先定义一个方法,实现这个接口之后比较所有的大小,无视类型,排序,扩展性.

    相关文章

      网友评论

          本文标题:面向对象--interface

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