类的用途
1.放置静态属性、静态方法的地方
2.用来实例化对象的模板
3.用来供其他人继承
抽象类——只可被继承
1.语法:
在定义类的时候,添加 abstract 修饰,这个类就是抽象类
2.java中赋予了抽象类一项新的能力(普通类不具备)
抽象类中允许定义一些方法,但没有被实现(没有方法体、只是声明),这些方法是专门留给子类去实现的,这些方法被称为抽象方法
接口——完全可以被理解成特殊的抽象类
接口和抽象类一样,不能被实例化,只可被继承
只能出现方法,这些方法,默认是抽象方法,并且被public所修饰
从某些方向讲:接口是一个极端的抽象类(全部只有抽象方法的抽象类)
定义接口
关键字:interface
public interface Flyable { void fly(); }
void fly() 默认视为 public abstract void fly()
接口的功能是被实现
关键字:implements
public class 麻雀 implements Flyable { @Override public void fly() { } }
接口本身也允许被继承,继承自另外的接口,同时允许多继承
interface A { void a(); } interface B { void b(); } interface z extends A,B { void z(); }
由于接口Z继承自接口A和接口B,所以,最终Z中有的抽象方法是 a()、b()、z()
最终类——只能实例化对象,不能被继承
通过 final 修饰类,表示最终类
public final class TestClass{ public void a(){ } }
接口 VS 抽象类
相同点
1)不能被实例化
2)允许出现抽象方法
不同点
1)接口只能出现抽象方法,其他的内容通通没有
2)普通类和抽象类之间的关系是继承(extends)关系,只能单继承
普通类和接口之间的关系是实现(implements)关系,允许一个类实现多个接口
3)接口和接口之间也允许继承关系,允许多继承
4)抽象类中可以有属性、普通方法,接口中只能出现抽象方法(默认都是public)
5)类总归还是描述一类事物,接口大多描述的是一组能力