10.10
因为子类继承了父类的成员变量和方法,所以在构造子类之前,必须先构造出一个父类,即调用父类的构造方法,初始化父类后,继承的子类才可以调用自身的构造函数初始化,而父类不知道子类,并且也不存在子类的成员变量,所以无法调用子类的构造方法进行初始化。
在“+”运算中,当任何一个对象与一个String对象连接时,会隐式地调用其toString()方法,默认情况下,此方法返回“类名@+hashCode”。为了返回有意义的信息,子类可以重写toString()方法。
instanceof运算符是判断一个对象是否可以转换为指定的类型,例如
Object obj=”hello”;
if(obj instanceof String)
java多态对于非静态成员方法“编译看左边,执行看右边”,对于非静态成员变量“编译和执行都看左边”。如果子类被当作父类使用,则通过子类访问的字段是父类的。
多态可以让代码有更强的适用性,当需求变化时,多态特性可以帮助我们将需要改动的地方减少到最低限度。当修改程序并扩充系统时,需要改动的地方较少,对其他部分代码的影响较小。
从抽象类继承的子类必须实现父类的所有抽象方法,否则,仍然是抽象类并且无法创建实例。抽象类不能创建对象,一般用来引用子类对象。
抽象类 抽象类变量 = new 派生自抽象类的具体子类();
面向对象可以使用 接口(interface) 来抽象对象的行为特性。接口采用关键字implements
例如 public interface IFood{
public void Cook();
}
public class Duck extends Bird implements IFood{
public void Cook{
…
}
}
接口类型 接口类型的变量=new 实现了接口的具体类型()