一、抽象类
说到抽象类,首先就得有一个概念,即在面向对象编程中,
所有的对象都是由类描述的,但不是所有的类都用来描述对象
而那些没有足够的元素来描述对象的类,就被称为抽象类。
对于抽象类而言,在 java中采用 abstract class 来定义抽象类,如:
public abstract class Student
{
private String name;
private String professional;
private int age;
public Employee(String name, String professional, int age)
{
System.out.println("定义一位学生");
this.name = name;
this.professional = professional;
this.age = age;
}
上述的一段代码利用抽象类定义了学生,可以看到,它和普通的类一样,有着成员变量、成员方法和构造方法。
抽象类的特点:
1. 不能实例化对象,但是存在类的其他功能。
2. 必须被继承才能被使用。
3. 抽象类中的抽象方法的修饰符只能为public或者protected,默认为public;
二、接口
对于接口来说,它在JAVA编程语言中是一个抽象类型,是抽象方法的集合。
接口不是类,但是与类的实现方式很像。
接口可以是抽象类,但抽象类不一定是接口。
接口的特点:
1.一个接口可以有多个方法。
2.接口相应的字节码文件必须在与包名称相匹配的目录结构中。
3.接口不能用于实例化对象,且没有构造方法。
4.接口支持多继承,且接口是要被类实现而不是继承。
5.接口中每一个方法都是隐式抽象的,接口中的方法会被隐式的指定为 public abstract
6.接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量
7.接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
三、抽象类与接口的区别
(参考自菜鸟教程)