面向对象的三大特性:继承,封装,多态
继承:
继承是面向对象的三大特性之一,是指一个类继承另一个类的属性和方法,使得子类具有父类的属性和方法。
继承的好处:
提高代码的复用性
父类中的属性与方法,子类中如果也需要直接继承父类就可以不用自己再定义
提高代码的维护性
多个子类中,都要增加一个属性和方法,或者修改删除一个属性和方法,那么直接在父类中操作就可以
提高代码的扩展性
这个父类需要增加一个子类,创建一个新的类继承父类就可以了
方法重写:子类中可以重写父类的方法,要求是参数必须一致
1.子类可以基于父类的方法之上增加相关自己特性的代码
2.子类可以完全重构父类的方法
3.子类以及子类对象优先调用重写之后的方法
继承的格式:
class子类名 extends 父类名{ }
例如:
class Student extends Person{ }
继承的特点
子类只能直接调用父类的非私有成员(成员变量和成员方法)
私有成员调用要靠封装方法(非私有的方法来操作)
子类不能继承父类的构造方法,但是可以通过super关键字来访问父类的构造方法
子类可以拥有自己的成员变量和成员方法,即子类可以对父类进行拓展
子类的继承关系不会因为多态而改变
(多态:一个对象可以具备多种类型状态
本类状态以及父类类型状态
不管处于什么状态调用重写的方法都是调用子类重写的方法)
一个类只能有一个直接父类,但是一个父类可以有多个直接子类
方法重载:
同一个类中,创建多个同名的方法,每一个方法的参数必须不一致,这种现象称为方法重载
参数不一致:数量,类型,顺序
返回值以及访问权限修饰符可以不一致也可以一致
根据你调用时传入的参数类型来决定调用重载方法中对应参数类型的方法
构造方法:
public:公开的,整个项目下都可以调用
private:私有的,只能在本类中使用
protected:受保护的,同一个package可以调用,不同的package的子类中可以调用
int:包默认,同一个package可以调用
final int:常量属性,每个对象都会有自己的一份
每一个类都有一个隐式的空参数构造方法
如果一个类显示的定义了构造方法(不管带不带参数),那么隐式的构造方法就会被覆盖
每个类可以基于方法重载创建多个构造方法
构造方法的名称必须和类名一致,没有返回值结构
构造方法是创建对象时调用new类构造方法(构造方法带的参数)
构造方法与构造代码块同属于初始化空间可以给常量初始赋值(每一个构造方法中都要有赋值的代码)
构造方法可以给属性赋值,通过参数传入初始化属性的值
构造方法可以初始化调用执行一些成员方法
如果父类中定义了构造方法,子类中必须有构造方法,并且构造方法的第一行调用父类的构造方法之一
继承中,子类在创建对象的时候,会向上连带着调用父类的构造方法