抽象类
实现抽象的方法
- 使用
abstract
修饰 - 抽象方法无需实现
- 抽象类无法实例化
public abstract Person{
......
public abstract test();
}
Person p = new Person(); //编译错误,因为Person时抽象类,无法实例化
抽象类的继承
- 使用extends继承
- 子类必须要实现父类(抽象类)的抽象方法。即,子类必须覆写抽象类中的抽象方法
abstract class Person {
public abstract void run();
}
class Student extends Person {
@Override
public void run() {
System.out.println("Student.run");
}
}
面向抽象编程
可以使用抽象类去引用子类(实现类)的具体实例
Person p = new Student()
注意事项
- 抽象类可以存在字段,需要abstract修饰吗?不需要
- 抽象类可以定于非抽象方法吗? 可以
接口
接口的含义
接口是一种更加抽象的抽象类,不能有字段,所有的方法都是抽象方法。
接口的声明
- 使用
interface
修饰,声明一个接口 - 接口内部的方法,默认都是public abstract修饰的,所以可以省略(写不写一样)
interface Person{
void run();
String getName();
}
接口的具体实现
- 当使用一个具体类去实现接口时,使用
implements
- 一个具体类可以同时实现多个接口
- 接口内的抽象方法,实现类必须全部实现
class Student implements Person(){
......
@Override
public void run(){System.out.println("run");}
@Override
punlic String getName(){
return Name;
}
}
接口间的继承
- 一个接口可以继承另一个接口,使用extends
interface Person{
void Hello();
}
interface Student extends Person{
void run();
void getName();
}
default修饰方法
- 使用default实现的方法,实现类可以不用覆写
interface Person{
default void run();
}