我有一个怀疑在重写。凌驾逻辑:初学者
class base{
public void amethod(){}
}
class child extends base{
public void amethod(int i){}}
在这种情况下会发生什么?方法是否被认为是2个不同的方法?还是它仍然覆盖?请澄清。
我有一个怀疑在重写。凌驾逻辑:初学者
class base{
public void amethod(){}
}
class child extends base{
public void amethod(int i){}}
在这种情况下会发生什么?方法是否被认为是2个不同的方法?还是它仍然覆盖?请澄清。
这不是重写,而是overloading,而这两者并不相关。
看一看的Java tutorial:
重载方法是由数量和 传递到方法的参数的类型区分。在代码示例中,draw(String s)和draw(int i)是不同且唯一的方法,因为它们的 需要不同的参数类型。
在你的程序是不是重写 BT是的,它是超载 .. 用于覆盖法,派生类必须有方法用同样的方法名称,相同的参数列表和相同的返回类型为基础类.. 在你的情况下,两种方法都有不同的参数列表。 更多重写理解,请访问:http://javabyroopam.blogspot.in/
重载为两种方法具有相同的名称和返回类型,但不同的参数和压倒一切意味着两种方法具有相同的名字,相同的参数,相同的返回类型,但必须是一个在不同这两种方法
public void amethod()
public void amethod(int i)
我觉得你长了一点,这是超载没有覆盖 ...
这将是一件容易的事,可以通过JVM自行检查。为什么不这样做,而不是在这里问呢?它会更快,更明确。 – duffymo
在子类中使用'@ Override'。然后编译器会报错。 (类的命名约定是首字母大写。) –
@duffymo - 更快?是!权威?实验给出确定的答案是值得商榷的。你需要做正确的实验,并有足够的理解来正确解释结果!如果你想要明确的话,阅读一本好书,Oracle教程......或者(最终是“权威性”)JLS。 –