201711671118《Java程序设计》第五章总结

5.1子类与父类

①JAVA不支持多重继承,即子类只能有一个父类。

②使用关键字extends来定义一个类的子类。如:class Student extends People{...}

③Object是所有类的祖先类。如果一个类(除了Object类)的声明中没有使用extends关键字,这个类被系统默认为Object的子类。

5.2子类的继承性

①子类和父类在同一个包中,则子类继承父类中非private的成员变量和方法,继承后的变量和方法的访问权限不变,不在同一个包时,不继承private和友好访问权限的成员变量和方法。

②其他类要访问由protected类继承的变量和方法,只有和该类的原来存在的类在同一个包才能访问。

5.3 子类和对象

①同一个包子类继承父类时,继承非private变量(不同包private和友好),但是父类的所有变量都会分配空间。因为子类从父类继承的方法可能会操作这些没有被继承的变量。

②子类与继承的父类的变量名字相同时,父类的成员变量会被隐藏。

③子类对象可以通过super来调用被隐藏或被继承的成员变量。

④子类继承的方法只能操作子类继承和隐藏的成员变量。

5.4方法重写(方法覆盖)

①子类通过重写可以隐藏已继承的方法。

②方法重写是指子类中定义一个1方法,这个方法的类型与父类的方法的类型一致或者是父类方法的子类型,并且名字、参数个数、参数类型和父类的方法完全相同。

③重写目的:子类通过方法重写隐隐藏进程的方法,子类通过方法重写可以吧父类的状态和行为改变为自身的状态和行为。

④重写的注意事项:重写父类的方法时,不允许降低方法的访问权限,但可以提高访问权限。

5.5 super关键字

①super关键字可以访问被隐藏的变量和方法。

②当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,如果子类的构造方法没有明显证明使用父类的哪个构造方法,子类会调用父类的构造方法。

③子类不继承父类的构造方法。因此,子类在其构造方法中使用super来调用父类的构造方法,而且super必须是子类构造方法的头一句,如果子类没有明显写出super关键字来调用父类的某个构造方法,那么默认有:super();

④当在父类定义多个构造方法时,应当包括一个不带参数的构造方法,防止子类省略super出现错误。

5.6 final关键字

①final关键字可以修饰类、成员变量和方法中的局部变量。

②final类不能被继承、final方法不能被重写、final修饰变量变为常量,声明时必须指定该常量的值,不能修改。

5.7 上转型对象

①对象的上转型对象的实体是子类负责创建的(父类对象接受子类实体),上转型对象会失去原对象的一些功能。

②上转型对象不能操作子类新增的成员变量,不能调用新增的方法。

③上转型对象可以访问子类继承或者隐藏的成员变量和实例方法。

④可以将对象的上转型对象再签字转换到一个子类对象,这时,该子类对象又具备了子类的所有属性和功能。

⑤不可以将父类将父类创建的对象的引用赋值给子类声明对象。

⑥多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为。

5.9 abstract类和abstract方法

①关键字abstract修饰的类成为abstract类(抽象类),关键字abstract修饰的方法成为abstract方法(抽象方法)。

②对于abstract方法,只允许声明,不允许实现,而且不允许使用final和abstract同时修饰一个方法或类,也不允许使用static修饰abstract方法,abstract方法必须是实例方法。

③非abstract类中不可以有abstract方法,而abstract类中可以有abstract方法,也可以有非abstract方法。abstract类里可以没有abstract方法。

④abstract类不能用new运算符创建对象,如果一个非抽象类是某个抽象类的子类,那么它必须重写父类的所有抽象方法。

⑤如果一个abstract类是一个abstract类的子类,那么它可以重写父类的abstract方法,也可以继承父类的abstract方法。

⑥abstract类不可以创建对象,但是可以作为其子类的上转型对象。

5.11 开闭原则

       开闭原则就是让设计的系统对扩展开放,对修改关闭。本质上指系统增加新的模块时,不需要修改现有的模块。

猜你喜欢

转载自blog.csdn.net/rumple49/article/details/83756398