JAVA基础(六)-----抽象类和接口
抽象类
抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:
abstract void fun();
抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
从这里可以看出,抽象类就是为了继承而存在的
1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
2)抽象类的构造器不能用于创建实例,主要是用于被其子类调用。构造器不能使用abstract修饰。
3)static、final不能和abstract类同时使用,但static和abstract可以同时修饰内部类。
接口
接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数。从这里,我们可以体会到Java语言设计者的初衷,它是对行为的抽象。在Java中,定一个接口的形式如下:
[public] interface InterfaceName { }
由于接口定义的是一种规范,因此接口里不能包含构造器和初始化定义,因此接口里定义的成员变量只能在定义时指定默认值。
成员变量:接口里的成员变量只能是静态常量,并且被隐式地指定为public static final变量。
方法:接口里的方法只能是抽象方法、类方法、默认方法或私有方法。
public interface Output{ //接口里定义的成员变量只能是常量 public static final修饰 int MAX_CACHE_LINE = 50;
//接口里定义的方法只能是public的抽象方法 public abstract修饰 void getData(String name);
//在接口里定义默认方法,需要使用default修饰 (其实就是有方法体的实例方法,因此default不能和static同时使用) default void test(){ System.out.println("默认的test()方法"); }
//在接口中定义类方法,需要使用static修饰 static String staticTest(){ return "接口里的类方法"; } //定义私有方法 (主要作用是作为工具方法,当两个默认方法(或类方法)中包含一段相同的实现逻辑时,私有方法将其抽取成工具方法) private void foo(){ System.out.println("foo私有方法"); } //定义私有静态方法 private static void bar(){ System.out.println("bar私有静态方法"); } }
浙公网安备 33010602011771号