接口

接口

接口是一种引用数据类型。使用interface声明接口,形式

public interface 接口名称{

}

接口的特性

1.接口中可以声明属性。接口中定义的所有变量都是static final类型的。在接口中声明属性很少见

2.接口中的方法都是公共抽象方法

3.接口不能拥有构造方法,也不能用于创建对象

4.接口可以多继承。  一个接口可以继承多个其他接口

5.一个类可以实现一个或者多个接口,该类称为接口的实现类(implement

class),实现类必须实现接口中的所有抽象方法



一个类只能继承一个父类,同时实现多个接口。继承在前,实现在后

特殊情况:抽象父类定义了和接口同名的抽象方法,实现类实现的是抽象父类的抽象方法

接口中定义的一些系列方法表示的是一种种的能力。接口让实现类实现这些能力,实现类的能力得到拓展和升级。



接口实现多态

接口实现多态: 接口类型引用实现类对象

继承实现多态: 父类类型引用子类对象

接口定义的方法被实现类实现,通过接口引用实现类时,调用接口中的方法时,执行的是实现类实现的方法。

面向接口编程

所谓面向接口编程,在程序设计时,只关心实现类具备什么能力,而不关心实现类如何实现这个能力。面向接口编程时,面向接口的约定而不考虑接口的具体实现。

抽象类和接口的异同比较

抽象类和接口都是引用数据类型,他们都不能创建对象。

他们都可以定义抽象方法,都可以实现多态。但是抽象类可以定义非抽象方法,而接口中定义的都是抽象方法。

抽象类和接口都具有传递性。抽象类是单根性(单继承),而接口是多继承。

在概念上,都可以重写抽象方法。子类重写抽象类,实现类实现接口

抽象类和子类解决的是模块内的问题(代码重用,重写,多态)而接口解决的是模块间的问题 => 高内聚,低耦合。接口可以用解耦模块。



Object

Object 类是所有类的根类。如果一个类没有显示继承另外一个类,那么该类一定继承于Object。

  obj.toString()   返回对象的字符串表示形式

  obj.equals(Object obj)    用于判断两个对象是否相等。

== 比较两个对象的内存地址或基本数据类型的比较,object默认equals实现是比较内存地址。

equals:用于比较两个对象的内容(属性)是否相等。

当自定义对象时,要比较自定义对象是否相等,就必须通过equals方法比较两个对象属性值是否相等,那就必须重写Object的equals方法。

public boolean equals(Object obj) {

         if(this == obj) {

              return true;   //条件成立 地址相同

         }


         Students =(Student) obj;

         if(this.sid.equals(s.sid) && this.name.equals(s.name) && this.age == s.age) {

              return true;

         }else {

              return false;

         }

     }

你可能感兴趣的:(接口)