7.2 继承语法
---恢复内容开始---
在创建一个类时,这个类总是在继承(Object),因此,除非已经明确指出要从其他类进行继承,否则就是隐式的在从Java标准根Object继承。
在继承过程中,需要先声明"新类与旧类相似",新类extends旧类,当这么做时,会自动获取基类中的所有方法和字段。
示例:
为了继承,一般情况下,都是将所有成员变量全部定义为private,将所有方法全部定义为public
由于Detergent是由关键字extends从Cleanser导出的,所以它可以在Detergent中自动获得这些
方法。因此可以将继承看做对类的复用。
正如上面scrub()方法中,使用基类的方法以及对它进行修改是可行的。但是如果想要在scrub()中
再次调用父类的scrub(),是做不到的,这样就会产生递归。所以这里可以使用super关键字,进行父类
方法的调用。
在继承中,并不是一定要使用基类的方法,也可以为子类进行增加方法,比如上面的foam(),在Detergent
中,Detergent对象除了可以调用父类中所有的方法,也可以调用子类中的foam()方法
初始化父类:
从外部看来,子类其实就是一个与父类具有相同方法的新类,或许还会有一些额外的方法和字段。但继承并不是直接复制父类的方法。当创建一个子类对象时,该对象包
含了一个父类的子对象,这个子对象与用父类直接创建对象是一样的。二者之间的区别就是后者来自于外部,前者则是被包装进子类对象中。