Java的接口和抽象类的特点
最近在看spring5源码的时候发现大量接口和抽象类的综合使用,让我再次深入理解了接口和抽象类的知识,下面做一些小总结,以便于记忆。
接口
1、interface修饰的类,其等值于 abstract interface
public abstract interface Person{}
public interface Person{}
//二者等值
2、接口中可以定义属性,但是定义的属性默认时静态常量,且必须初始化,但是只可以用public修饰或者不加修饰符
int age = 18;
public String name = "姓名";
public static final String addr = "山居";
//三者等值
3、接口中定义的方法不能有方法体,且修饰符只能用public或者默认为空,因为接口都是需要被实现的,所有用public修饰没什么问题哈
public String height();
String getName();
抽象类
被abstract修饰的类就是抽象类
public abstract class YourSelf implements Person{
public abstract String setName();
protected abstract String getaddr();
}
可以用public 和 protected来修饰,protected修饰的时候就只能在本包内使用该抽象类,以下为一些基本特点:
1、抽象方法只能在抽象类里面
2、抽象类和抽象方法必须被abstract 修饰
3、抽象类不能创建对象(即不能实例化)
4、抽象类中可以有非抽象的方法和一般属性
5、抽象类和类的关系也是继承
6、一个类继承了抽象类,要么重写所有的抽象方法,要么它自己就是抽象类