抽象类
使用了关键字abstract声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。特征:
1、抽象类是不完整的(可以理解为类中的方法并没有完全实现),并且它只能用作基类。
2、抽象类不能直接实例化,并且对抽象类使用new运算符是编译时错误。
3、在继承抽象类时,必须覆盖该类中的每一个抽象方法
示例:设计一个门类,因为是普通门和指纹门开门的方式是不同的:普通门用钥匙;指纹门可以输入指纹、可以按密码或者用钥匙。但是,二者关门的方式都一样(把门一堆就可以关上了)。这里就符合抽象类的设计思路,把开门设计成抽象方法,具体方法内容交给子类去实现;而把关门设计成普通方法,子类复用该方法就好。
详细了解Java抽象类与接口
代码实现如下:
public abstract class Door{
public abstract void open();
public void close(){
System.out.println(“关门!”);
}
}
public class CommonDoor extends Door {
@Override
public void open() {
System.out.println("普通门用钥匙开门。");
}
}
public class FingerprintDoor extends Door {
@Override
public void open() {
System.out.println("指纹门用钥匙、指纹、密码都可以开门。");
}
}
Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。接口通过关键字interface来定义,类使用接口通过关键字implements来实现。例如:public class A implements B
特征:
1、一个类可以实现多个接口,接口弥补了类的不能多继承缺点。
2、Java接口本身没有任何实现,只描述行为,所以Java接口比Java抽象类更抽象化。
3、接口不是类,不能使用new来实例化一个接口。
4、接口中的方法可以有参数列表和返回类型,但不能有任何方法体。
5、接口中可以包含字段,但是会被隐式的声明为static和final。
6、接口中的字段只是被存储在该接口的静态存储区域内,而不属于该接口。
7、接口中的方法可以被声明为public或不声明,但结果都会按照public类型处理。
8、实现一个接口时,需要将被定义的方法声明为public类型,否则为默认访问类型,Java编译器不允许这种情况。
9、如果没有实现接口中所有方法,那么创建的仍然是一个接口。
10、扩展一个接口来生成新的接口应使用关键字extends,实现一个接口使用implements。