Java中的重载Overload和重写Overriding

方法重载Overload和方法的重写Overriding的区别。Overload的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是 父类与子类之间多态性的一种表现,重载Overloading是 一个类中多态性的一种表现。

记忆窍门:“
亲告诉孩
---写的这么差,作业
重写


如果 在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被
重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
如果在 一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的 重载 (Overloading)。 Overloaded的方法是可以改变返回值的类型。

重载(Overloading)

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。只能重载构造函数
重载的规则:
1、在使用重载时只能 通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);
2、
不能
通过访问权限、返回类型、抛出的异常进行重载;
3、方法的异常类型和数目不会对重载造成影响;
被重载的方法必须改变参数列表;可以改变返回类型;可以改变访问修饰符;可以声明新的或更广的检查异常;
方法只能够在 同一个类中或者在一个子类中被重载

/*** Overloading(重载,过载)* 方法名相同,参数类型不同或者参数类型顺序不同* 返回值,访问修饰符,异常可以不一样*/public class Overloading {    public int test(){        System.out.println("test1");        return 1;    }     public void test(int a){        System.out.println("test2");    }        //以下两个参数类型顺序不同    public String test(int a,String s){        System.out.println("test3");        return "returntest3";    }        public String test(String s,int a){        System.out.println("test4");        return "returntest4";    }        public static void main(String[] args){        Overloading o = new Overloading();        System.out.println(o.test());        o.test(1);        System.out.println(o.test(1,"test3"));        System.out.println(o.test("test4",1));    }
}复制代码

重写(Overriding)

能够在需要新的子类特有行为时重新在子类中定义方法。
重写(覆盖)的规则:(参数,访问修饰---且不能为private,返回值,异常)
1、参数必须完全相同,否则不能称其为重写而是重载.
2、访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。
3、返回值必须一致;
4、所抛出的异常必须一致或是其子类;
5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。
6、静态方法不能被重写为非静态的方法(会编译出错)。不能重写被标示为final的方法;

来源: blog.sina.com.cn/s/blog_8129…


继承是前提,如果不能继承一个方法,则不能重写这个方法。

/**
* Overriding(重写,覆盖)
* 重写是子类继承父类对父类的方法进行修改。方法名,参数,返回值必须一样。
* 访问级别的限制性和异常不能比被重写的方法强
*/
class TestClass {
    public void test(){
        System.out.println("这是TestClass的test方法");
    }
}
 
public class Overriding extends TestClass {
 
    public static void main(String[] args) {
        new Overriding().test();//使用子类中重写的test方法
    }
 
    @Override
    public void test() {
        System.out.println("这是Overriding的test方法,重写了TestClass中的方法");
    }
}
复制代码



你可能感兴趣的:(Java中的重载Overload和重写Overriding)