super关键字
注意:调用构造器的语句只能作为另一个构造器的第一条语句;构造器参数可以传递给当前类(this)的另一个构造器,也可以传递给超类(super)的构造器
**
多态(一个基类类型的变量对象可以引用任何一个继承它的子类的对象)
“is-a”规则(判断是否应该将数据设计为继承关系):它指出子类的每个对象也是超类的对象
例如:每个精力都是员工,因此将Manager类设计为Employee的子类是有道理的,反之不然,并不是每一名员工都是经理。
“is-a”替换原则 :程序中出现超类对象的任何地方都可以使用子类对象替换
**
强制类型转换
将一个值存入变量时,编译器将检查是否承诺过多。如果将一个子类型的引用复制给超类变量,编译器允许。将超类的引用赋值给子类变量时,就承诺过多必须进行强制类型转换
- 只能在继承层次内进行强制类型转换
- 再将超类强制转换为子类之前,应该使用 instanceof 进行检查
abtsract抽象类
抽象类是作为派生其它类的基类使0用,不是用来构造特定的实例对象的。包含一个或多个抽象方法的类本身必须被声明为抽象类
抽象方法充当着占位方法的角色,他们在子类中具体实现。
扩展抽象类有两种选择:
- 在子类中保留抽象类中的部分或者所有抽象方法人仍未定义,这样必须将子类也标记为抽象类
- 定义全部方法,这样子类就不是抽象的
protected受保护访问
限制超类中的某个方法或者字段只允许子类访问,受保护的只能在其子类以及同一包中的其它类访问。最佳实践推荐在方法中使用此修饰符,如果需要限制某个方法的使用,可以将它声明为protected
四个访问控制修饰符总结
- 仅对本类可见-private
- 对外部完全可见-public
- 对本包和所有子类可见-protected
- 对本包可见-默认,不需要修饰符