接口是一种引用数据类型。使用interface声明接口,形式java
public interface 接口名称{编程 }spa |
[1] 接口中能够声明属性(C)。接口中定义的全部变量都是static final类型的。设计
public interface MyInterface {对象 public static final String version = "1.0";继承 public int count = 10; // 默认是static final类型接口 }内存 |
通常不多在接口中声明属性。ci
[2] (C)接口中的方法都是公共抽象方法。io
public interface MyInterface { public abstract void showInfo(); void showInfo3();
// 推荐写法 public void showInfo2(); } |
[3] (C)接口不能拥有构造方法,不能用于建立对象
|
[4] 接口能够多继承。一个接口能够继承多个其余接口(B)
|
public interface CInterface extends AInterface, BInterface {
} |
CInterface接口就具有了A、B接口中定义的抽象方法。
[5] (A) 一个类能够实现一个或者多个接口,该类称为接口的实现类(implement class).
实现类必须实现接口中的全部(抽象)方法
总结:
实现类实现接口,必须实现接口中定义的抽象方法。
接口中定义的一些系列方法表示的是一种种的能力。接口让实现类实现这些能力,实现类的能力获得拓展和升级。
实现类根据自身特性实现接口中定义的方法。
接口实现多态: 接口类型 引用 实现类对象
继承实现多态: 父类类型 引用 子类对象
接口定义的方法被实现类实现,经过接口引用实现类时,调用接口中的方法时,执行的是实现类实现的方法。
实现类对象具有接口中定义的能力 是一种has a 关系
子类对象是一种父类类型 是一种is a 关系
接口表示一种约定(协议),约定(规范)了实现类应该具有(has a)的能力。
理解:
=>实现类必须实现接口中全部的方法,因此接口规范了实现类的行为
=> 接口约定了实现类应该具有的行为。
面向接口编程
所谓面向接口编程,在程序设计时,只关心实现类具有什么能力,而不关心实现类如何实现这个能力。面向接口编程时,面向接口的约定而不考虑接口的具体实现。
也就是说,面向接口编程时,接口的定义方只关系实现类是否具有接口所定义的能力,而实现类如何被的该能力接口定义方一点都不关心。
Object 类是全部类的根类。
若是一个类没有显示继承另一个类,那么该类必定继承于Object。
equals(Object obj) 用于判断两个对象是否相等。
== 比较两个对象的内存地址或基本数据类型的比较,object默认equals实现比较内存地址。
equals:用于比较两个对象的内容(属性)是否相等。
当自定义对象时,要比较自定义对象是否相等,就必须经过equals方法比较两个对象属性值是否相等,那就必须重写Object的equals方法。
在java中,一个文件能够定义多个类,文件名必须和public 类型的类的类名保持一致。这两个类是平行关系。
在java中,一个类也能够定义在一个类的内部,定义在内部的类称为内部类(inner class),定义在外部的类称为外部类(out class).
public class Outer {
[修饰符] class Inner{
} } |
一个内部类做为一个外部类的成员而存在,此时该内部类称为外部类的成员内部类。