当我执行:
java B
对于下面的程序,为什么调用超类A的main?据我所知,静态方法属于类级别。
class A
{
public static void main(String[] args)
{
System.out.println("A.main");
}
}
class B extends A{ }
静态方法由子类继承。
问题内容: 我已经用Google搜索过两次,但仍然不了解超类型方法。谁能解释一下这是什么吗? 问题答案: OOPS中有超类型和子类型的概念,在Java中,这种关系是通过继承实现的,即使用关键字: 在超类中声明的任何成员(字段,方法)都称为超类型。 因此在上面的上下文中,如果类具有类似 Set是class的超类型方法。 但是,请注意,如果还有另一个类,请说: 然后,方法 不是类的 超类型 ,因为类与
问题内容: 这是代码 我期望的输出是: 但实际上是: 看来Child类中的静态块没有得到执行,但是为什么呢?这是反直觉的,不是吗? 补充: 为了更清楚,我列出了 2 __以下 1 分: 正如@axtavt所说,根据JLS 12.4.1,类Child已加载,但未初始化。 但是@Alexei Kaigorodov指出,根据 jvms-5.5,应初始化Child类,因为对Child类执行了getstat
这是我的密码 结果为上述结果之一。从调用仍然调用子类的,即使从词汇上讲,meth调用在超类内部!那么,当是私有的时候,为什么会有不同的行为呢? ___________edit____________ 代码是这样的吗 O/P将是 因此,即使超级类中的正在调用,但实际上子类的正在被调用。所以,方法调用不是词法意义上的!也就是说,即使看起来将调用超级类的meth,实际上它的子类的becoz子类实例首先调
我正在使用BlueJ IDE。我有一个名为的主类,还有另一个类(用于为实例方法服务)。 以下是的代码: 以下是的代码:
问题内容: 我写了下面的代码 因此,当我运行它时,它可以正常运行并打印输出“ Hello”。 但是,如果JVM规范要求该main方法应该是公开的,因为“否则它就看不到main”,那么它也不适用于该类吗?如果JVM在未声明为public时“看不到” Hello.main(),它将如何看到类A本身。 除了“因为规范这样说”以外,对此还有什么解释吗? 并且,如果JVM能够看到所有类和方法,因为它本身就是
在Java中,无法在子类中编写与超级类中的方法同名的方法的实际原因是什么?(请注意,我并没有试图覆盖该方法,这就是为什么我将关键字) 请看下面的示例: 这个问题在IDE中表示为'method()'不能重写'method()';重写的方法是最终的;但是,我想了解这种情况导致编译器失败的原因。