继承
通过继承可以实现多种事物之间的一种关联关系。
类的继承
在现有类的基础上构建一个新的类,子类会自动拥有父类所有可继承的(公共的)属性和方法。
继承
[修饰符] class 子类名 extends 父类名{
//程序核心代码
}
修饰符public或省略不写,若没有extends一个父类,默认继承object。
java类只支持单继承,不允许多重继承。但可以多层继承。
重写父类方法
子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表、返回值类型。
子类重写父类方法时,不能使用比父类更高的访问权限。
super关键字
调用父类成员变量和方法变量、构造方法
super.成员变量
ssuper.成员方法{[参数1。参数2...]}
super.([参数1,参数2...])
通过super调用父类构造方法的代码必须位于子类构造方法的第一行,并且只出现一次。子类的构造方法中一定会调用父类的某一个构造方法。默认调用父类无参的构造方法、若父类中只定义了有参的构造方法,在子类调用默认的无参构造方法,将出错。则:
1.在子类中显式调用父类中已有的构造方法
2.在父类中定义无参的构造方法
在定义一个类时,若无特殊需求,当定义了有参构造方法后,尽量在类中显式定义一个无参的构造方法,避免继承时出错。
Object类搜是所有类的父类.............有一些常用方法。
final关键字:修饰类、变量、方法。修饰的类为最终类,不可被继承,修饰的方法不可被子类重写,修饰的变量(成员变量和局部变量)是常量,只能赋值一次(一旦被赋值,其值不可改变)。
局部变量可以在声明时同时对变量进行赋值,也可以先声明以后再赋值。
成员变量只能在声明的同时赋值。
抽象方法:abstract修饰,在定义时不需要提供方法体。一些方法用来描述类的行为特征,但是有时方法的实现方式无法确定。抽象方法没有方法体,不可被调用。要使用则需要创建一个子类,在子类中实现抽象类中的抽象方法(子类继承抽象类,子类中编写方法体)。.........??图啥啊。子类实现了父类的抽象方法后,可以正常进行实例化操作,通过实例化的对象可以调用实现的方法。
抽象类:
一个类中包含抽象方法,类也必须用abstract修饰。包含抽象方法的类必须定义为抽象类,但抽象类中可以不包含抽象方法。抽象类不可被实例化。
接口(interface):
一种特殊的抽象类,其内部所有方法都是抽象方法(abstract),默认方法(default)和静态方法(类方法(static))。
[修饰符] interface 接口名 [extends 父接口1,父接口2,.....]{
[public][static][final] 常量类型 常量名=常量值;
[public][abstract] 方法返回值类型 方法名 {[参数列表]};
}
修饰符可以使用public或省略(省略时默认采用包权限访问接口)
可以继承多个接口,接口内部可以定义多个常量或者抽象方法,定义常量时必须进行初始化赋值,定义默认方法或者静态方法时,可以有方法体。
静态方法可以通过: 接口名.方法名调用
抽象方法和默认方法只能通过接口实现类的实例对象来调用,因此需要定义一个接口实现类。
接口实现类:
implements关键字实现当前接口,并实现接口中的所有抽象方法。接口实现类可以在继承另一个类的同时实现多个接口。
[修饰符] class 类名 [extends 父类名]{implements 接口1,接口2,.....}{
}