Java-抽象类和接口 一,抽象类 1,定义抽象类 使用abstract关键字修饰的类,是普通类的超集,普通类有的,抽象类都有,抽象类不能实例化对象
abstract class A{
abstract void show();
abstract void show(int i);
}
2,实现抽象方法 用abstract修饰的方法,抽象方法只有方法的名称,参数列表,返回值,没有方法体。抽象类必须有子类,子类必须覆写抽象类的所有方法(除非子类也是抽象类)
abstract class A{
abstract void show();
abstract void show(int i);
}
public class B extends A{
int x;
abstract void show(){
System.out.println("x=" + x);
}
abstract void show(int i){
System.out.println("x=" + x);
}
}
3,abstract和final关键字区别
abstract关键字: (1)修饰抽象类,其必须有子类 (2)修饰抽象方法,子类要重写抽象类抽象方法 final关键字: (1)修饰属性,表示常量 (2)修饰类,表示类到此为止,不能有子类 (3)修饰方法,该方法不能重写 注:abstract和final关键字不能同时使用
二,接口 1,接口定义 接口是抽象类的一种变体,但和抽象类有一些差异。接口使用interface关键字定义,形式为
interface My{
double a = 3.7;
void show();
}
接口中的所有方法都是抽象方法,abstract可以不写 (1)抽象类的方法不一定是抽象的,接口中方法都是抽象的 (2)接口中所有数据都是共有静态常量,具有public,final,static属性,一般不写 (3)接口所有方法都是抽象,接口的子类必须重写接口的抽象方法 2,接口实现 接口生成子类是implements关键字实现一个接口,被实现的接口可以有多个,之间用逗号隔开
interface My
{
double a = 3.7;
void show();
}
class Test implements My
{
public void show(){
System.out.println("a=" + a);
}
}
|