第五章
1.继承是一种由已有的类创造新的类的机制,可以利用继承,先定义一个共有属性的一般类,根据该一般类再定义具有特殊属性的子类,子类一般继承类的属性和行为。java不支持多重继承。
2.在类的声明中,用extends定义一个类的子类,如果没有使用extends,这个类被系统默认是object的子类。
(注:继承关系形成树形结构,根结点Object类是所以类的祖先类。)
3.子类继承父类的成员变量作为自己的成员变量,可以被类中增加定义的任何实例方法操作。
4.如果子类父类在同一个包,子类可以继承父类中不是私有的成员变量和方法,及公用,保护,友元作为自己的成员变量和方法;
如果子类父类不在同一个包,子类只能继承公用和保护的成员变量和方法。
5.当子类所声明的成员变量与父类的成员变量名字相同时,子类就会隐藏所继承的成员变量
6.方法重写:是指子类中定义一个方法,这个方法的类型和父类的方法类型一致或者父类的方法的类型的子类型,且这个方法的名字、参数个数、参数类型和父类的方法完全相同;子类可以通过重写隐藏已继承的方法,通过方法的重写可以把父类的状态和行为改变自身的状态和行为。
7.重写不允许降低方法的访问权限,可以提高访问权限。访问权限从高到低为:public,protected,友好的,private。
8.instanceof运算符(双目):左对象,右是类,当对象是类或其子类所创建时(有一腿)为true。
9.成员变量的隐藏:所声明的成员变量的名字和从父类继承来的成员变量的名字相同时,子类会隐藏所继承的成员变量。
10.重写:a.子类有权利重写从父类继承的方法。
b.语法规则:方法的类型一致(也可以是父类方法类型的子类型),且名字、参数个数、参数的类型完全相同。
c.目的:i.隐藏继承的方法 ii.可以把父类的状态和行为改变为自身的状态和行为。
11.调用被隐藏的方法或成员变量要使用关键字super。(前缀super.)
也可使用super调用父类的构造方法(放子类构造方法的首句),子类不继承父类的构造方法。
若没有写出super来调用,则默认有:
super();
(子类的构造方法总是先调用父类的构造方法,若无指明则调用父类的不带参数的构造方法)
12.final类不能被继承,final方法不允许子类重写,成员变量或局部变量被修饰为final时为常量。
13.对象的上转型对象:A类是B类的父类,当用子类创建一个对象,并把这个对象的引用放到父类的对象中时,称对象a是对象b的上转型对象。
上转型对象的使用:①.上转型对象不能操作子类新增的成员变量;不能调用子类新增的方法。 ②.上转型对象可以访问子类继承或隐藏的成员变量,也可以调用子类继承的方法或子类重写的实例方法。③. 如果子类重写了父类的某个实例方法后,当用上转型对象调用这个实例方法时一定是调用了子类重写的实例方法。
14.多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为。
15.用关键字abstract修饰的类称为abstract类(抽象类)。用关键字abstract修饰的方法称为abstract方法(抽象方法)
abstract类有如下特点 :①和普通的类相比,abstract类里可以有abstract方法。也可以没有。对于abstract方法,只允许声明,不允许实现,而且不允许使用final修饰abstract方法。
② 对于abstract类,不能使用new运算符创建该类的对象,只能产生其子类,由子类创建对象。
③如果一个类是abstract类的子类,它必须具体实现父类的所有的abstract方法。