接口是一种数据类型,接口也是类,但接口与类有很大的区别。首先,定义接口的关键字是interface,而不是class.接口中同样可以定义属性和方法,但是接口的属性必须是一个公共的常量,方法必须是一个公共的抽象方法。而且接口中只能定义常量和抽象方法。所以接口的格式为:
public interface 接口名{
public static final 数据类型 常量名=常量; //定义常量
public abstract 返回值数据类型 方法名(); //定义抽象方法
}
需要注意的是,接口中默认的访问修饰符是public,而且只能是public,接口默认提供static,final,abstract关键字,即在程序中即使不写它们,也是可以的。因为接口中没有构造方法和方法体,所以 接口不能用来实例化对象。
接口的实现使用implements关键字,不同于类的extends,实现接口时,必须重写(实现)接口中定义的所有方法,因为接口中方法都是默认的public,所以即使接口中没有写public,在实现时也要加上public。
类实现接口就相当于继承了接口,但不同于类的继承,接口可以继承一个或多个接口。
抽象类也是一种类,其定义和继承的格式为:
public abstract class 类名 extends 类名 implements 接口名{
//抽象方法定义,继承的子类必须实现
public abstract 返回值数据类型 方法名();
//定义已经实现的方法,常量
}
抽象类定义时,一定要在类名前加上abstract关键字,抽象类继承接口后,可以不去实现接口中的抽象方法,而且,抽象类是不可以用来实例化对象的。
public interface 接口名{
public static final 数据类型 常量名=常量; //定义常量
public abstract 返回值数据类型 方法名(); //定义抽象方法
}
需要注意的是,接口中默认的访问修饰符是public,而且只能是public,接口默认提供static,final,abstract关键字,即在程序中即使不写它们,也是可以的。因为接口中没有构造方法和方法体,所以 接口不能用来实例化对象。
接口的实现使用implements关键字,不同于类的extends,实现接口时,必须重写(实现)接口中定义的所有方法,因为接口中方法都是默认的public,所以即使接口中没有写public,在实现时也要加上public。
类实现接口就相当于继承了接口,但不同于类的继承,接口可以继承一个或多个接口。
抽象类也是一种类,其定义和继承的格式为:
public abstract class 类名 extends 类名 implements 接口名{
//抽象方法定义,继承的子类必须实现
public abstract 返回值数据类型 方法名();
//定义已经实现的方法,常量
}
抽象类定义时,一定要在类名前加上abstract关键字,抽象类继承接口后,可以不去实现接口中的抽象方法,而且,抽象类是不可以用来实例化对象的。