黑马程序员技术交流社区

标题: 重载与覆盖区别咨询 [打印本页]

作者: 涐扪①起奮乧    时间: 2013-12-1 00:33
标题: 重载与覆盖区别咨询
本帖最后由 涐扪①起奮乧 于 2013-12-1 21:57 编辑

public class A
{
      private void a(int i, int j) throws Exception {...}
      protected void b(String s) {...}
}

class B extends A
{
      protected void a(int i, int j) throws IOException {...}
      public void b(String s) {...}
      public void b1(String s, int j){...}
}

overlod是父类方法的重载,方法名称一致,但参数序列或类型不一致
override是父类方法的覆盖,方法名称一致,参数序列和类型完全一致,使用时只调用本类方法,即是覆盖了父类的方法

B中的a方法和第一个b方法覆盖了A中的a, b方法,B中的第b1方法有两种定义方式,所以它被重载了。

我要问的是下面问题:

方法的重载(overload)必须发生在同一个类中。就针对这句话,我不理解。上面例子中不是B和A两个类吗?且B类中的b1方法重载了A类中的b方法。还请解释一下。
作者: long362144768    时间: 2013-12-1 02:14
B继承了A,A的所有protect和public,默认方法,成员变量都是B的成员,都属于B,所以是重载了,就相当于B继承了A的遗产,可以试一下,在A中定义一个非私有成员变量,B可以访问到,说明这个成员变量也是属于B




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2