Java继承场景下对象创建:解析Fruit ob = new Apple();写法
关于
Fruit ob = new Apple();的写法解析 这是面向对象编程里的**向上转型(Upcasting)**操作,因为Apple继承自Fruit,子类对象可以直接赋值给父类类型的变量,这是Java这类支持继承的OOP语言默认允许的隐式转换。
核心作用:实现多态
- 当你有多个
Fruit的子类(比如Apple、Banana),用父类Fruit类型的变量统一引用这些子类对象,后续调用方法时会自动执行子类的实现(前提是子类重写了父类的方法)。 - 举个实际例子:如果
Fruit定义了eat()方法,Apple重写了这个方法,那么调用ob.eat()时,实际跑的是Apple类里的eat()逻辑,而非Fruit的默认实现。
注意事项
- 向上转型后,父类变量只能访问父类中定义的属性和方法,不能直接调用子类特有的方法(比如
Apple的pickApple())。如果要调用子类专属方法,需要先做向下转型(Apple apple = (Apple) ob;),转型前最好用instanceof判断类型,避免出现ClassCastException。 - 这种写法能让代码更灵活易扩展,比如写一个接收
Fruit参数的方法,就能处理所有子类对象,不用为每个子类单独编写逻辑。
内容的提问来源于stack exchange,提问作者M X
相关产品推荐
相关产品推荐

