什么是接口?
接口可以看成我们现实中的接口,可以给我们提供某种服务或功能,但是要按照他的规则进行,接口和我们的抽象类很像但是有许多不同
接口的使用规范:
1接口中的成员变量默认为 public static final 修饰的静态常量
2默认方法为 public abstract修饰的抽象方法(除了成员变量和方法不能包含其它东西)
3接口 没有构造方法并且 不能被实例化
4一个接口 不能实现另一个接口但能 继承多个接口
5一个类 必须实现接口的抽象方法,除非这个类也是抽象类
接口代表的只是 一种能力,但你拥有了这个能力 具体用来做什么它并不规定
例如
public interface CPU {
public String getBrand();
public String getHz();
}
CPU这个接口定义了CPU必须具有属性和Hz两个功能属性,但是它并没规定内容,也就是生产厂家只用注意这两个规范,内容可以自己制造不同的CPU
public class IntelCPU implements CPU{
public String getBrand() {
return "Inter 酷睿i9处理器";
}
public String getHz() {
return "主频4.2GHz";
}
}
就像interCPU 生产商生产了一种类型的CPU
Inter 酷睿i9处理器,主频4.2GHz
属性只要符合CPU的属性规定,也就是符合方法,至于内容自己定,灵活性高
创建接口的关键词
public interface CPU {} // interface接口
和
实现接口的关键词
public class IntelCPU implements CPU{} // implements工具
接口的好处:
1接口的出现 解决了java的单根继承问题,一个类虽然只能继承一个父类但是能实现多个接口
例如:防盗门继承了门的属性同时又实现了锁的接口
防盗门跟门的关系是 is a
跟锁的关系是 has a
2接口的出现使得功能能更加细分,增加了程序的灵活性和可扩展性,增加系统之间的耦合
接口和抽象类有什么相同和不同
例如
相同:1实现接口的类 必须要实现接口的所有抽象方法,跟抽象类一样
2接口和抽象类一样 不能被实例化
3代表的都是 系统的抽象层,也可以说是顶层
不同:1抽象类 允许有普通方法存在,但 接口的方法必定全是抽象方法
2一个类只能 继承一个抽象类但是 能实现多个接口
3在已存在的继承树中, 抽取接口很简单,但是 抽取一个抽象类就很困难
4接口不能有构造方法
接口可以看成我们现实中的接口,可以给我们提供某种服务或功能,但是要按照他的规则进行,接口和我们的抽象类很像但是有许多不同
接口的使用规范:
1接口中的成员变量默认为 public static final 修饰的静态常量
2默认方法为 public abstract修饰的抽象方法(除了成员变量和方法不能包含其它东西)
3接口 没有构造方法并且 不能被实例化
4一个接口 不能实现另一个接口但能 继承多个接口
5一个类 必须实现接口的抽象方法,除非这个类也是抽象类
接口代表的只是 一种能力,但你拥有了这个能力 具体用来做什么它并不规定
例如
public interface CPU {
public String getBrand();
public String getHz();
}
CPU这个接口定义了CPU必须具有属性和Hz两个功能属性,但是它并没规定内容,也就是生产厂家只用注意这两个规范,内容可以自己制造不同的CPU
public class IntelCPU implements CPU{
public String getBrand() {
return "Inter 酷睿i9处理器";
}
public String getHz() {
return "主频4.2GHz";
}
}
就像interCPU 生产商生产了一种类型的CPU
Inter 酷睿i9处理器,主频4.2GHz
属性只要符合CPU的属性规定,也就是符合方法,至于内容自己定,灵活性高
创建接口的关键词
public interface CPU {} // interface接口
和
实现接口的关键词
public class IntelCPU implements CPU{} // implements工具
接口的好处:
1接口的出现 解决了java的单根继承问题,一个类虽然只能继承一个父类但是能实现多个接口
例如:防盗门继承了门的属性同时又实现了锁的接口
防盗门跟门的关系是 is a
跟锁的关系是 has a
2接口的出现使得功能能更加细分,增加了程序的灵活性和可扩展性,增加系统之间的耦合
接口和抽象类有什么相同和不同
例如
相同:1实现接口的类 必须要实现接口的所有抽象方法,跟抽象类一样
2接口和抽象类一样 不能被实例化
3代表的都是 系统的抽象层,也可以说是顶层
不同:1抽象类 允许有普通方法存在,但 接口的方法必定全是抽象方法
2一个类只能 继承一个抽象类但是 能实现多个接口
3在已存在的继承树中, 抽取接口很简单,但是 抽取一个抽象类就很困难
4接口不能有构造方法