java中接口和抽象类以及它们的属性方法都分别可以用什么访问修饰符?
【Java接口修饰符是public abstract】
接口就是提供一种统一的”协议”,而接口中的属性也属于“协议”中的成员。它们是公共的,静态的,最终的常量。相当于全局常量。抽象类是不“完全”的类,相当于是接口和具体类的一个中间层。即满足接口的抽象,也满足具体的实现。
接口中不可以定义变量即定义的变量前都要加上final修饰,使之成为常量(没有final修饰的是变量,加上final修饰就会变成常量)。所以接口的属性默认是public static final 常量,且必须赋初值。
【抽象类】
abstract抽象
1、修饰类时为抽象类,即为概念类,不能实例化;
2、修饰的方法为抽象方法,该方法没有方法体,必须由子类实现,若没有实现会报错;
3、子类若为抽象类,则其中的抽象方法可不实现;
注:抽象类可以没有抽象方法,但抽象方法所在的类必须为抽象类
【抽象类和接口的相同点和区别】
1、抽象类是创建一个体现某些基本行为的类,并声明各种方法但不实现该类,这点与接口类似;但区别是抽象类中可以有抽象方法和非抽象方法,接口中的方法都为抽象方法;
2、抽象类中不能有抽象构造方法和抽象静态方法;
3、接口中的变量只能定义static final的成员变量;
4、抽象类和接口中的抽象方法必须全部实现;
5、子类只能继承一个抽象类,接口的实现可实现多个接口;