前言
由于我经常把重载、重写、搞混,所以这里特地整理了一下面向对象,详细介绍请转到这里。
继承]
extends 关键字可以申明一个类是从另外一个类继承而来的。
子类拥有父类非 private 的属性、方法。
- java继承中对构造函数是不继承的,只是调用(隐式或显式)。
在创建子类的对象时,Java虚拟机首先执行父类的构造方法,然后再执行子类的构造方法。在多级继承的情况下,将从继承树的最上层的父类开始,依次执行各个类的构造方法,这可以保证子类对象从所有直接或间接父类中继承的实例变量都被正确地初始化。(所以需要super指定)。
没有super会自动调用父类的是:构造函数,成员函数不会
构造函数:
需要super指明调用父类哪个构造函数
成员函数:
若对父类方法重写,可以用super跟this调用父类跟子类重写的方法
重写
方法名、参数都一样,方法体不一样,返回值和形参都不能改变
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
注意:子类重写父类后,重写后的方法不会自动调用父类被重写的方法,这不是构造函数。不能乱了
构造方法不能被重写
异常
可以减少或删除,一定不能抛出新的或者更广的异常
访问
一定不能做更严格的限制(可以降低限制)
重载
方法名一样,参数不一样
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
异常
可以修改
访问
可以修改
封装
-
修改属性的可见性来限制对属性的访问(一般限制为private)
-
对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问
多态
多态存在的三个必要条件
继承
重写
父类引用指向子类对象
多态实现方式:
重写
接口
抽象类和抽象方法