Java中使用向上转型(Upcasting)的主要原因在于提高代码的可复用性和灵活性。向上转型是将一个子类对象赋值给超类引用类型的过程,通过这种方式,可以将子类对象当做超类对象来使用。使用向上转型的好
在这个例子中,Shape是一个抽象类,它包含了一个抽象方法draw(),这个方法需要在子类中进行实现。Circle是Shape的子类,它实现了draw()方法。
因为子类继承抽象类时,需要调用父类的构造方法来初始化父类的成员变量,如果父类没有构造方法,那么子类就无法初始化父类的成员变量了。另外,抽象类的构造方法只能被子类调用,不能被实例化,这也是为了防止误用抽象类的构造方法创建对象。