【发布时间】:2016-10-29 03:19:11
【问题描述】:
我需要有人来看看我对这些代码行的看法。
class AAA
{
public void rideMethod(){System.out.println("AAA's Method");
public void loadMethod(){"void Method"};
}
class BBB extends AAA
{
public void rideMethod(){System.out.println("BBB's Method");
public void loadMethod(int num){"int Method"};
}
class CCC extends BBB
{
public void rideMethod(){System.out.println("CCC's Method");
public void loadMethod(double num){"double Method"};
}
class Ride
{
public static void main(String[] args)
{
AAA ref1 = new CCC();
BBB ref2 = new CCC();
CCC ref3 = new CCC();
ref1.rideMethod();
ref2.rideMethod();
ref3.rideMethod();
ref3.loadMethod();
ref3.loadMethod(1);
ref3.loadMethod(1.2);
}
}
//These are results.
CCC's Method
CCC's Method
CCC's Method
void Method
int Method
double Method
这是我要的。
继承AAA()和BBB()的主作用域中ref#的CCC()是我们可以在这里引用包含类的各个方面的框。而 ref# 的 AAA、BBB 和 CCC(作为类类型)就像我们可以访问的边界。由于 ref# 已使用 CCC() 进行了初始化,并且采用了 @override 的概念,因此必然会出现 Syso("CCC's Method")。
每个 loadMethod 都会拆分出“void int and double Method”,因为它们最初使用的类是 AAA 和 BBB。
感谢阅读!
【问题讨论】:
-
你的问题到底是什么?另外,您提到了
@override,但您的代码中没有@override... -
这是一个问题吗?我不明白问题出在哪里
-
最后三个结果行不可能来自提供的代码:它们都应该说“void Method”
-
@jay 现在这是一个问题,我已经添加到我的答案中。见下文。
标签: java inheritance overloading overriding