面向对象--interface

接口

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 一. Java基础部分.................................................
    wy_sure阅读 3,837评论 0 11
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,091评论 0 4
  • 进入大学以后,你什么都得学会靠自己,这似乎是耳边的谆告,也是摆脱不了的现实,家里除了给予你经济支持,所有的都...
    NigelWu阅读 548评论 0 2