码迷,mamicode.com
首页 > 其他好文 > 详细

重载与覆盖的区别

时间:2015-07-01 12:29:49      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

什么是方法的重载(Overload)?
其概念是:概念:
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型或参数顺序不同即可。
存在的原因:
屏蔽了一个对象的同一类方法由于参数不同所造成的差异。
特点:
与返回值类型无关,只看参数列表。

以下是方法重载的示例:
public void a(int a){}
public int a(){}
public void a(int a,String s){}

我的总结是:方法名相同,但是方法的签名不一样。且被重载的方法还可以起作用。

eg:
    class Chongzai 
    {
        public static void main(String[] args) 
        {
            int ret = name(3,4,5);
            System.out.println(ret);
        }
        public static int name(int a, int b)
        {
            int c = a+b;
            return c;
        }
        public static int name(int a, int b, int m)//这就叫做方法的重载,只要参数列表不一样。好处:用户使用时限制很小;
        {
            int c = a+b+m;
            return c;
        }
    }

覆盖的含义:
方法覆写产生原因:
当父类中某个方法不适合于子类时,子类出现父类一模一样的方法.
判断必杀技:子类方法前加上@Override能编译通过,表明是方法的覆写。
调用被覆盖的父类方法:使用super.方法名(实参);
方法覆写时应遵循的原则(一同两小一大):
(一同):方法签名必须相同;
(两小):
子类方法的返回值类型比父类方法的返回值类型更小或相等
子类方法声明抛出的异常应比父类方法申明抛出的异常更小或相等;
(一大):子类方法的访问权限应比父类方法更大或相等;

子类需要覆写父类方法。
当父类的某个方法不适合于子类本身的特征行为时就当覆写父类中应当改变的方法。

我的总结是:覆盖的方法签名是一样的,且被覆盖的方法一般不起作用。

eg
package test;

    class Dog{
        void eat(){
            System.out.println("一般的狗吃一般的狗粮!");
        }
    }

    class HashDog extends Dog{
        void eat(){
            System.out.println("哈士奇吃哈士奇的狗粮!");
        }
    }

    class ZangAoDog extends Dog{
        void eat(){
            System.out.println("藏獒吃藏獒的狗粮!");
        }
    }
public static void main (String [ ]  args){
                new ZangAoDog.eat();
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

重载与覆盖的区别

标签:

原文地址:http://blog.csdn.net/lijianchang1992/article/details/46706947

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!