接口就是一组没有方法体的方法定义的组合
接口定义方式:
public interface IInterface{
public void method1();
public void method2();
}
接口是对事物的抽象,接口和实现类是is like a
关系,接口和实现类可以本质的概念上不完全一致,可以把接口看成一个契约。
比如有个Sleep interface
:
public interface Sleep{
public void sleep();
}
如果有个Person
实现了Sleep
:
public class Person implements Sleep{
public void sleep(){
}
public void eat(){
}
}
说明Person
具有sleep的功能,但不能上Person
和Sleep
本质是一样的。
几点说明
- 接口一般是public的,因为需要实现和被外部访问,实际上可也以定义一个private的接口。
- 接口内的方法如果省略修饰符,默认是public的
- 接口也可以嵌套
- 接口可以多重继承
理解Interface
和abstract class
的区别
Interface
和abstract class
都是对事物的抽象,语法区别就是类只能单继承,接口可以多继承。JDK1.8以前接口不能有方法的实现,1.8接口可以有个默认的方法实现。
abstract class
的父类和子类是is a
的关系,接口和实现类是is like a
关系。
个人理解,abstract class
是对同类事物的抽象,interface可以对不同类事物进行抽象。