用abstract修饰的方法称为抽象方法,抽象方法只有方法的定义,没有方法的实现。
一个类中如果包含了抽象方法,该类应该用abstract来修饰
如果一个类继承了抽象类,那么就必须重写抽象方法(除非该类也被声明是抽象方法)
抽象类不可以实例化,abstract和final关键字不可以同时修饰一个类,因为final关键字使用的类不可继承,而抽象类不继承没意义。
一个类继承抽象类而之后,必须重写其抽象方法,不同的子类可以有不同的实现方法
抽象类的意义在于
为其子类提供一个公共的类型
封装子类中的重复内容(成员变量与方法)
定义抽象方法,子类虽然有不同的实现,但方法的定义是一致的。
接口
可以看做是一个特殊的抽象类,只包含抽象方法的抽象类,接口中不可以定义成员变量,但是可以定义常量
接口中只可以定义没有实现的方法(可以省略public abstract)
实现接口
一个类可以实现多个接口,实现的接口直接用逗号分隔,关键字为implements
接口可以继承,子接口继承了父类的所有方法
接口与抽象类的区别
1、抽象类要被子类继承,接口被子类实现
2、接口只能对方法进行声明,抽象类中既可以对方法进行声明,也可以实现
3、抽象类可以有构造方法, 接口不可以
4、抽象类中抽象方法的访问权限是可以是 public、protected 和默认类型,接口中的抽象方法只能是public
5、一个类可以实现多个接口,但只能继承一个类
6、抽象类主要是用来抽象类别,接口主要是用来抽象方法功能