我对多态,重载和覆盖的概念非常困惑,因为它对我来说似乎是一样的.请解释这些概念,它们如何彼此不同
很困惑所以请指导我.
谢谢
给定以下类层次结构,以下语句的动态和静态类型是什么?
类层次结构:
class Alpha {}
class Beta extends Alpha {}
class Gamma extends Alpha {}
class Epsilon extends Alpha{}
class Fruit extends Gamma{}
class Golf extends Beta {}
class Orange extends Fruit{}
Run Code Online (Sandbox Code Playgroud)
对于以下每个语句,静态类型?动态类型?:
Fruit f = new Fruit();
Alpha a = f;
Beta b = f;
a = b;
Gamma g = f;
Run Code Online (Sandbox Code Playgroud)
我
理解的答案/问题Fruit f = new Fruit()将是静态和动态类型的水果.
Alpha a = f;在编译时将是Alpha类型(静态)并在运行时键入Fruit(动态).
Gamma g = f;在编译时将是Gamma类型(静态)并在运行时键入Fruit(动态).
但是我不知道另外两个答案.Beta b = f是一个实例,其中同一个超类的两个子类彼此分配,所以我不确定它在编译时是类型Beta还是类型Alpha(静态).并且a = b是声明后的赋值,所以我不确定答案是什么.有人请帮帮我谢谢!
dynamic ×1
inheritance ×1
java ×1
oop ×1
overloading ×1
overriding ×1
polymorphism ×1
static ×1