Java的抽象体现在抽象和接口两个方面。
一、抽象类
抽象类是对事物的抽象,即对类的抽象,包括属性和方法。abstract修饰符来修饰。包含抽象函数的类称为抽象类。抽象类不能实例化,适用于继承的。抽象类中的抽象方法不用实现,子类必须实现继承的父类的抽象方法。
二、接口
接口是方法的抽象,方法的提供接口,只需要定义定义方法,不需要实现。实现该接口的类必须实现接口中定义的方法。
三、抽象类和接口的区别(形象的例子说明)
飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将 飞行 这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将 飞行 设计为一个接口Fly,包含方法fly( ),然后Airplane和Bird分别根据自己的需要实现Fly这个接口。然后至于有不同种类的飞机,比如战斗机、民用飞机等直接继承Airplane即可,对于鸟也是类似的,不同种类的鸟直接继承Bird类即可。
//接口
public interface FlyGood {
public abstract void fly();
}
public class TestClass implements FlyGood{
public void fly(){
System.out.println("I CAN FLY!");
}
}
public class Airport implements FlyGood{
public void fly(){
System.out.println("I also can fly !");
}
}
//抽象类
public abstract class FlyGood {
public abstract void fly();
}
public class Airport extends FlyGood{
public void fly(){
System.out.println("I also can fly !");
}
}
注意:1、一个类可以implements多个接口,但是一个类只能extends一个父类,这也是接口弥补父类的一个优势