第五章
一·教材学习内容总结
1.子类与父类:利用继承,可以先定义一个共有属性的一般类。根据该一般类再定义具有特殊属性的子类,子类继承一般类的属性和行为,并根据需要增加它自己新的属性和行为。(子类 extends 父类)
2.Object是所有类的祖先类。每个类有且仅有一个父类。
3.子类自然地继承父类中不是private的成员变量和方法,访问权限保持不变。
子类和父类不在同一个包中时,private不会被继承,只继承protected和public。
父类中的private成员变量尽管分配了内存空间,也不作为子类对象的变量,即子类不继承父类的私有成员变量。
4.对象 instanceof 类(判断某一对象是不是属于某个类)
5.成员变量的隐藏:子类所声明的成员变量的名字和从父类继承来的成员变量的名字相同(声明的类型可以不同),这种情况下,子类就会隐藏所继承的成员变量。
注:子类继承的方法所操作的成员变量一定是被子类继承或隐藏的成员变量。
6.方法重写:子类通过重写可以隐藏已继承的方法。(重写的这个方法的名字,参数个数,参数的类型和父类的方法完全相同)
注:重写方法既可以操作继承的成员变量,调用继承的方法,也可以操作子类新声明的成员变量,调用新定义的方法,但无法操作被子类隐藏的成员变量和方法。如果子类想使用被隐藏的方法或成员变量,必须使用关键字:super。
7.super调用父类的构造方法
如果子类的构造方法没有明显地指明使用父类哪个构造方法,子类就调用父类的不带参数的构造方法。
super必须是子类构造方法中的头一条语句。
当在父类中定义多个构造方法时,应当包括一个不带参数的构造方法。
8.final
1)final类不能被继承,不能有子类。
2)final修饰父类中的一个方法,那么这个方法不允许子类重写。
3)如果成员变量或局部变量被修饰为final,那它就是常量。在声明时无默认值。
9.上转型对象
1)上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。
2)上转型对象可以访问子类继承或隐藏的成员变量。
意义:父类创建一个对象,子类创建一个对象,子类赋给父类之后只需父类的对象出现来调用,子类的对象不需要出现。
3)注:
a.不可以将父类创建的对象的引用赋值给子类声明的对象。
b.如果子类重写了父类的静态方法,那么子类对象的上转型对象不能调用子类重写的静态方法,只能调用父类的静态方法。
4)可以通过上转型实现多态。
10.abstract类和abstract方法
注:对于abstract方法,只允许声明,不允许实现,即没有方法体,而且不允许使用final和abstract同时修饰一个方法或类,也不允许使用static修饰abstract方法,即abstract方法必须是实例方法。
1)abstract类中可以有abstract方法
2)abstract类不能用new运算符创建对象
3)abstract类的子类可以重写父类abstract方法,也可以继承。如果一个非abstract类是abstract类的子类,他必须重写父类的abstract方法,即去掉abstract方法的abstract修饰,并给出方法体。
4)abstract类作上转型对象
11.面向抽象编程
abstract类只关心操作,而不关心这些操作具体的实现细节,可以使程序的设计者把主要精力放在程序的设计上,而不必拘泥于细节的实现。
12.开闭原则:让设计的系统对扩展开放,对修改关闭。