继承inherit
从已有的类派生出新类叫做继承
设计这些类来避免冗余并是系统更易于理解和易于维护
如果从a类继承得来的b类
称a类为超类(super class)、父类(parent class)或基类(base class)
称b类为次类(subclass)、子类(child class)、扩展类(extended class)或派生类(derived class)
子类可以总父类继承可访问的数据域和方法,还可以添加新的数据域和新方法
Public class 子类extends父类
继承是用来为关系(is-a)建模的,不要仅仅为了重用方法这个原因而盲目的扩展一个类
Java 不允许多重继承,一个java类只可能直接继承一个父类,只能单一继承
Super
调用父类的构造方法
super()
super(参数)
构造方法可用来构造一个类的实例,父类的构造方法不能被子类继承,只能从子类的构造方法中用super调用
调用父类的方法
这个调用必须是构造方法的第一行
This 不能与super同时使用
覆盖
子类中有与父类相同名字的方法,则会用子类的方法
覆盖的修饰符只能比父类的级别高
子类继承父类时,自动调用父类的构造函数
子类的构造函数系统自动添加super()
子类继承父类的所有东西,所以子类在对象实例时,会访问父中的构造函数
Final
最终修饰符,可以修饰类、属性、方法
final 修饰类的时候, 此类不可被继承, 即 final 类没有子类。
final 保证用户调用时动作的一致性,可以防止子类覆盖情况的发生
final 定义常量 (注意在 JAVA 命名规范中常量需要全部字母都大写)
常量的地址不可改变,但在地址中保存的值(即对象的属性)是可以改变的
final 定义方法:这样的方法为一个不可覆盖的方法。
Public final void print(){}
如果一个方法前有修饰词 private 或 static,则系统会自动在前面加上 final。即 private 和 static 方法默认均为 final 方法。
final 并不涉及继承,继承取决于类的修饰符是否为 private、default、 protected 还是 public。
是否继承取决于这个方法对于子类是否可见。
20161115 修订-------------------------------------------------------------------------
继承:继承是通过关键字extends体现的。
继承的格式:
class 类名1 extends 类名2{
}
继承要注意的事项:
1. 千万不要为了减少重复代码而去继承,只有真正存在着继承关系的时候才去继承。
2. 父类私有的成员不能被继承。
3. 父类的构造函数不能被继承。
4. 创建子类对象时默认会先调用父类无参的构造函数。
调用父类 的构造方法是可以初始化从父类继承下去的属性的。
super关键字:
super关键字代表了父类空间的引用。
super关键字的 作用:
1. 子父类存在着同名的成员时,在子类中默认是访问子类的成员,可以通过super关键字指定访问父类的成员。
2. 创建子类对象时,默认会先调用父类无参的构造方法,可以通过super关键字指定调用父类的构造方法。
super关键字调用父类构造方法要注意的事项:
1. 如果在子类的构造方法上没有指定调用父类的构造方法,那么java编译器会在子类的构造方法上面加上super()语句。
2. super关键字调用父类的构造函数时,该语句必须要是子类构造函数中的第一个语句。
3. super与this关键字不能同时出现在同一个构造函数中调用其他的构造函数。因为两个语句都需要第一个语句。
super关键字与this关键字的区别:
1. 代表的事物不一致。
1. super关键字代表的是父类空间的引用。
2. this关键字代表的是所属函数的调用者对象。
2. 使用前提不一致。
1. super关键字必须要有继承关系才能使用。
2. this关键字不需要存在继承关系也可使用。
3. 调用构造函数的区别:
1. super关键字是调用父类的构造函数。
2. this关键字是调用本类的构造函数。
目前的问题:父类的功能无法满足子类的需求。
方法重写的前提: 必须要存在继承的关系。
方法的重写: 子父类出了同名的函数,这个我们就称作为方法的重写。
什么是时候要使用方法的重写:父类的功能无法满足子类的需求时。
方法重写要注意的事项:
1.方法重写时, 方法名与形参列表必须一致。
2.方法重写时,子类的权限修饰符必须要大于或者等于父类的权限修饰符。
3.方法重写时,子类的返回值类型必须要小于或者 等于父类的返回值类型。
4.方法重写时, 子类抛出的异常类型要小于或者等于父类抛出的异常类型。
Exception(最坏)
RuntimeException(小坏)
方法的重载:在一个类中 存在两个或者两个 以上的同名函数,称作为方法重载。
方法重载的要求
1. 函数名要一致。
2. 形参列表不一致(形参的个数或形参 的类型不一致)
3. 与返回值类型无关。
instanceof 关键字
instanceof关键字的作用:判断一个对象是否属于指定的类别。
instanceof关键字的使用前提:判断的对象与指定的类别必须要存在继承或者实现的关系。
instanceof关键字的使用格式: 对象 instanceof 类别
instanceof关键字的作用: 目前没用。但是后天我们学习 到了多态之后就非常有用。
一般我们做强制类型转换之前都会使用该关键字先判断一把,然后在进行转换的。