继承
- 含义 子类可以使用父类中公有的成员
2.语法
public Dog extends Pet { //访问修饰符 子类类名 继承关键字 父类类名
}
- 使用extends关键字来实现继承,其中Dog称为子类,Pet 称为父类、基类。 修饰符如果是public, 则该类在整个包中都可以使用: 修饰符如果是private,则该类只能在本类的方法中使用;
2. 概述:继承与封装和多态被称为Java的特性,是减少代码的重复的手段,子类只能继承一个父类,即每个类只能有一个直接父类。继承表达的是is a的关系,或者说是每个儿子只能有一个亲生父亲。
3.子类与父类的关系
1.public和protected修饰的属性和方法,子类和父类可以不在同一个包里。
2.继承默认权限修 饰符修饰的属性和方法,但子类和父类必须在同一个包里。
3.无法继承private修饰的属性和方法。
4.构造方法不可以被继承。
4.重写和继承关系中的构造方法
- 重写方法和被重写方法必须具有相同的方法名。
- 重写方法和被重写方法必须具有相同的参数列表。
- 重写方法的返回值类型必须和被重写方法的返回值类型相同或是其子类。
- 重写方法不能被缩小访问权限。
- 补充重载与重写的区别:重载涉及同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值类型、访问修饰符无关。重写涉及的是子类和父类之间的同名方法,要求方法名相同、参数列表相同、返回值类型相同访问权限不能大于父类;
- 5.this与super关键字
this:对当前类对象的引用,static能修饰父类,不能修饰内部类
super:对当前类的父类成员的引用
super()——调用父类的构造函数
6.构造函数
子父类关系:
当调用子类构造函数的时候一定会调用父类的构造函数
调用顺序:先父类,再子类
默认情况下:子类会调用父类的无参构造函数
子类怎么显示调用父类的构造函数:
语法:在大括号里面super(参数)
要求:在调用构造函数的时候只能位于第一行
继承条件下构造方法的调用规则如下。
如果子类的构造方法中没有通过super显式调用父类的有参构造方法.也没有通过this显式调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。在这种情况下,有没有"super();" 语句,效果都是一样的。
如果子类的构造方法中通过super显式调用父类的有参构造方法,则将执行父类相应的构造方法,而不执行父类无参构造方法。
7.抽象类
实现重写:直接重写——相同方法名、相同参数列表
抽象类和抽象方法的特点如下。
- 抽象类不能实例化。抽象类中可以没有、有一个或多个抽象方法,
- 抽象方法只有方法声明,没有方法实现。有抽象方法的类必须声明为抽象类。关键字为abstract,子类必须重写所有的抽象方法才能实例化,否则子类还是一个抽象类。
- 抽象类可以包含实例方法,也可以有抽象方法。
8.final关键字
用final修饰的类,不能再被继承。用final修饰的方法,不能被子类重写。用final修饰的变量将变成常量,只能在初始化时进行赋值,不能在其他的地方修改。