一、抽象类
1.1、抽象类
使用abstract关键字定义的类称为抽象类
public abstract class Employee
{
private String name;
private int number;
}
在 Java中抽象类不可以实例化为对象。例如:
1.2、抽象方法
-
使用abstract关键字定义的方法称为抽象方法。抽象方法没有方法体
-
抽象方法只能定义在抽象类中。换句话说,只要类中有一个抽象方法,那这个类一定是抽象类。
public abstract class Employee//只要类中有一个抽象方法,那这个类一定是抽象类。
{
public abstract void work();//抽象方法
}
1.3、继承抽象类
抽象类的继承和普通类一样,都是通过extens关键字实现继承的;
继承抽象类的子类,必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。
1.4、抽象类总结
- 抽象类不能被实例化。
- 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
- 象类中的抽象方法只是声明,不包含方法体
- 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
- 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
二、接口
接口是抽象类的延伸,可以将它看作是纯粹的抽象类,接口中的所有方法都没有方法体。
2.1、接口定义
接口使用 interface 关键字进行定义,其语法如下:
public interface Animal {//interface定义一个叫Animal的接口
//定义接口方法可省略 public abstract 关键字
void Bark();//接口里面声明了一个Bark()接口方法,但是没有方法体
}
- (1)在接口中,方法必须被定义为 public 或 abstract 形式,其他修饰权限不被 Java 编译器认可。或者说,即使不将该方法声明为 public 形式,它也是 public 形式。
- (2) 在接口中定义的任何字段都自动是 static 和 fianl 的。
2.2、接口实现
类使用implements关键字实现接口。在类声明中,implements关键字放在class声明后面。
接口的实现实际是接口方法的实现
2.3、接口总结
- 接口不能用于实例化对象。
- 接口没有构造方法。
- 接口不能包含成员变量,除了 static 和 final 变量,接口中的成员变量只能是 public static final 类型的。
- 接口不是被类继承了,而是要被类实现。
- 接口支持多继承。即一个类可以实现多个接口。:public class Dog implements Interface1, Interface2
- 当类实现接口的时候,类要实现接口中所有的方法。
- 接口也可以通过extends继承另一个接口:public interface Hockey extends Sports
- 接口中的成员(成员变量和成员方法)声明不允许使用 private 和 protected 修饰符。