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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

overriding VS overload
首先:overriding是子类继承父类的问题,是子类的函数对父类的函数的重新定义,
即父类有个方法 void speak.(){}方法
如果子类也有 void speak (){}方法则,最终运行的是子类的函数。
要注意的是:
   1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
   2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。
   3、重写的方法的返回值必须和被重写的方法的返回值一致;
   4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;
   5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。
   6、静态方法不能被重写为非静态的方法(会编译出错)。
   7、如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
  (父类: void speak.(){int num=1} 子类:void speak.(){int num=2}子类:this.num 父类:super.num)

overload
        1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,
           不同的参数个数,不同的参数顺序(参数类型必须不一样);
          2、不能通过访问权限、返回类型、抛出的异常进行重载;
           3、方法的异常类型和数目不会对重载造成影响;
例如:
        class test1
{
        private byte b;
        test1()
        {
        b=1;
        b = b += 1;
        System.out.println("C.b="+b);
        }
        test1(byte b)
        {
        this.b = b;
             ++b;
        System.out.println("D.b="+b);
        }
}
class Number1
{
        public static void main(String[] args)
        {       
                byte b = 1;
               
                test1 c = new test1();
               
                test1 d = new test1(b);
               
        }
}


评分

参与人数 1技术分 +1 收起 理由
淡夜清风 + 1 淡定

查看全部评分

3 个回复

倒序浏览
:)要沉吗???
回复 使用道具 举报
0.0.没有帮助吗?
回复 使用道具 举报
本来就是不相干的两个概念,总结一下也挺好啦:D
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马