面向对象的三大特征
封装
getXxx和setXxx方法
继承(extends)
引用数据类型转换必须发生在父子之间,且同样存在自动类型(由下向上)转换和强制类型转换(由上到下)。
强制类型转换语法: 子类类名 子类的对象名 = (子类类名) 父类引用;
protected关键字
1.同包下可以任意访问;2.不同包下,在子类中必须创建子类对象才能进行访问。
继承的限制
1.父类的私有成员可以被继承,但无法被访问,因为没有权限;
2.父类的构造器无法被继承;
3.父类的静态成员无法被继承,但是可以通过子类类名点进行访问。
子类对象的初始化
1.类加载,先父后子,在创建一个对象时,先加载父类,若存在多个父类,那么一定先加载最顶级的父类,然后最后加载当前子类;
2.成员赋值,先父后子
3.隐式子类对象初始化,子类对象创建中,父类的构造器一定先于子类构造器执行,会调用父类构造器,且父类代码块会执行,但不会创建父类对象;
4.显式子类对象初始化,在子类构造器中第一行用super(参数);
5.super关键字,在构造器中表示调用父类构造器,且该语句必须在构造器的第一行。构造器中super和this不共存。
继承对象名点成员变量的机制
成员变量的访问范围,父类类型只能访问父类,子类类型可以访问父类和子类。
成员变量的访问结果,引用为父类则访问父类结果,引用为子类则访问结果为子类。
故成员变量的访问机制都是根据对象的数据类型来决定的,无需考虑何种对象。
继承对象名点成员方法访问的机制
成员方法的访问范围,父类类型只能访问父类方法,子类类型可以访问父类和子类方法;
成员方法的访问结果,实际数据类型为父类的访问结果为父类行为,子类类型的访问结果为子类行为。
故成员方法的访问范围根据引用数据类型,访问结果根据对象的实际数据类型。
错题回顾
引用数据类型转换的是数据类型