
java关于方法重载和方法重写 5
大家都知道,方法重载是在同一个类里面完成的,重写只有子类继承父类的时候方可实现,但是现在我在一个类里面写了一个内部类,方法既可以按照方法重写写一个方法,又可以按照方法重载...
大家都知道,方法重载是在同一个类里面完成的,重写只有子类继承父类的时候方可实现,但是现在我在一个类里面写了一个内部类,方法既可以按照方法重写写一个方法,又可以按照方法重载写一个方法,试问这里的重写和重载还是否是重载和重写呢?
展开
展开全部
重写:子类继承父类时覆盖(或者说替换)父类具有同样签名的方法。这里的重点在于覆盖特性,即重写之后,使用该子类的引用调用重写后的方法时,只能调用到重写后的方法,无法调用到被重写的父类方法。
重截:同一个类里具有相同方法名但不同参数列表的方法,每个方法都可以被调用。
子类继承父类的方法 public void methodA()后,
再在子类里追加 public void methodA(String input)
这时在子类里就发生了methodA的重截。
重点是 一个是覆盖,一个是增加,跟是不是内部类,同一个类没有关系。
重截:同一个类里具有相同方法名但不同参数列表的方法,每个方法都可以被调用。
子类继承父类的方法 public void methodA()后,
再在子类里追加 public void methodA(String input)
这时在子类里就发生了methodA的重截。
重点是 一个是覆盖,一个是增加,跟是不是内部类,同一个类没有关系。
追问
那你说内部类里面这样声明了 ,那他是个甚么定型呢?你不能说一句话说他没有关系,我只是想明白内部类里面这样做法,算不算重载或者算不算重写,因为我在测试类里面调用的话 ,也能调用到内部类里面重写的方法(如你所说),这怎么解释
追答
你能把代码贴出来吗?不明白你哪里有疑问。
现在我假设有一个类Outer,它有一个方法public void methodA(),它里面有还一个内部类Inner。
Inner类里有方法public void methodA(),public void methodA(String input)
这时,如果Inner 是继承了Outer的,那么Inner里面的public void methodA()属于重写,因为它覆盖了Outer的方法;而public void methodA(String input)属于重载。
如果Inner没有继承Outer,那Inner里的方法跟Outer里面的方法没有任何关系。单从重写,重载方面来看,Inner就跟普通的独立文件的类是一样的,只发生了methodA的重载。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询