关于JAVA中的抽象类和接口中常量和变量定义的原因
转载自https://my.oschina.net/cdzsc/blog/86107
在抽象类中,可以包含一个或多个抽象方法;但在接口(interface)中,所有的方法必须都是抽象的,不能有方法体,它比抽象类更加“抽象”。
1. 为什么接口中只能定义static final:
1.1 static(这时暂且认为是变量)解释:因为一个类可以实现多个接口,如果一个类同时实现了多个接口而每个接口中都定义了同一个变量的话就会产生在类中不知道是哪个接口中的变量了,所以必须定义成static的,每个接口拥有各自的这个变量。
1.2 final解释:因为一个接口可以被多个类实现,如果不定义成final的话每个实现了该接口的类都去改变这个变量就会产生错误,所以必须定义成final。
public interface SataHdd{ //连接线的数量 public static final int CONNECT_LINE=4; //写数据 public void writeData(String data); //读数据 public String readData(); }
注意:接口中声明的成员变量默认都是 public static final 的,必须显示的初始化。因而在常量声明时可以省略这些修饰符。
2. 为什么抽象类中可以定义变量:
因为每个类只能有一个父类,就不会产生上述的接口中的一些问题。