Java的类能够分为三类:函数
类:使用class定义,没有抽象方法。url
抽象类:使用abstract class定义,能够有也能够没有抽象方法。.net
接口:使用inerface定义,只能有抽象方法。code
在这三个类型之间存在以下关系:继承
类能够extends:类、抽象类(必须实现全部抽象方法),但只能extends一个,能够implements多个接口(必须实现全部接口方法)。接口
抽象类能够extends:类,抽象类(可所有、部分、或者彻底不实现父类抽象方法),能够implements多个接口(可所有、部分、或者彻底不实现接口方法)。get
接口只能extends一个接口。编译器
继承之后子类能够获得什么:io
子类拥有父类非private的属性和方法。编译
子类能够添加本身的方法和属性,即对父类进行扩展。
子类能够从新定义父类的方法,即多态里面的覆盖,后面会详述。
关于构造函数:
构造函数不能被继承,子类能够经过super()显示调用父类的构造函数。
建立子类时,编译器会自动调用父类的无参构造函数。
若是父类没有定义无参构造函数,子类必须在构造函数的第一行代码使用super()显示调用。
类默认拥有无参构造函数,若是定义了其余有参构造函数,则无参函数失效,因此父类没有定义无参构造函数,不是指父类没有写无参构造函数。看下面的例子,父类为Human,子类为Programmer。