2012-05-07 60 views
0

我有一个怀疑在重写。凌驾逻辑:初学者

class base{ 
public void amethod(){} 
} 
class child extends base{ 
public void amethod(int i){}} 

在这种情况下会发生什么?方法是否被认为是2个不同的方法?还是它仍然覆盖?请澄清。

+2

这将是一件容易的事,可以通过JVM自行检查。为什么不这样做,而不是在这里问呢?它会更快,更明确。 – duffymo

+0

在子类中使用'@ Override'。然后编译器会报错。 (类的命名约定是首字母大写。) –

+0

@duffymo - 更快?是!权威?实验给出确定的答案是值得商榷的。你需要做正确的实验,并有足够的理解来正确解释结果!如果你想要明确的话,阅读一本好书,Oracle教程......或者(最终是“权威性”)JLS。 –

回答

6

这不是重写,而是overloading,而这两者并不相关。

看一看的Java tutorial

重载方法是由数量和 传递到方法的参数的类型区分。在代码示例中,draw(String s)和draw(int i)是不同且唯一的方法,因为它们的 需要不同的参数类型。

0

在你的程序是不是重写 BT是的,它是超载 .. 用于覆盖法,派生类必须有方法用同样的方法名称,相同的参数列表和相同的返回类型为基础类.. 在你的情况下,两种方法都有不同的参数列表。 更多重写理解,请访问:http://javabyroopam.blogspot.in/

0

重载为两种方法具有相同的名称和返回类型,但不同的参数和压倒一切意味着两种方法具有相同的名字,相同的参数,相同的返回类型,但必须是一个在不同这两种方法

public void amethod() 
    public void amethod(int i) 

我觉得你长了一点,这是超载没有覆盖 ...