概念
抽象类:必须要用abstract class声明
接口:interface 类名,如果一个类中的全部方法都是抽象方法,全部属性都是全局常量,那么此时就可以将这个类定义成一个接口。
抽象方法
抽象方法指的是在抽象类或者是接口中只声明未实现的方法(未实现指的是没有方法体),抽象方法必须使用abstract关键字声明
需要注意的是,一个抽象类或接口中可以没有抽象方法,即是可以空白,而抽象方法必须写在抽象类或者是接口中。(比如 Seriallizable接口,它仅仅是作为一个“标识”接口,标志实现接口的类具有序列化功能)
public abstract class Person {
// public abstract void say();
}
另外还需注意的是,抽象类里的方法可以不全是抽象方法,但是接口里的方法必须全是抽象方法。
public abstract class Person {
public abstract void say();
void speak(){
System.out.println("我叫啊头");
}
}
比较常见的注意事项:
1、抽象类能有构造方法,抽象类不可以使用new关键字创建对象,但在子类创建对象时,抽象父类也会被JVM实例化。
2、如果一个子类继承抽象类,那么必须实现其所有的抽象方法。如果有未实现的抽象方法,那么子类也必须定义为抽象类。
3、因为接口本身都是由全局常量和抽象方法组成,所以abstract可以省略,同样的,public static final也可以省略。
4、类是先继承(extends)后实现(implements)。
5、接口是用来弥补无法多继承的局限。 class 子类 implements 父接口1,父接口2...{ }
6、接口不能有构造方法