A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 涐扪①起奮乧 中级黑马   /  2013-12-1 00:33  /  1105 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 涐扪①起奮乧 于 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方法。还请解释一下。

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

1 个回复

倒序浏览
B继承了A,A的所有protect和public,默认方法,成员变量都是B的成员,都属于B,所以是重载了,就相当于B继承了A的遗产,可以试一下,在A中定义一个非私有成员变量,B可以访问到,说明这个成员变量也是属于B
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马