java重写与重载的区别和注意事项

来源:互联网 发布:tensorflow 分割 编辑:程序博客网 时间:2024/05/14 22:43

QUESTION NO: 3
1. class A {
2. protected int method1(int a, int b) { return 0; }
3. }
Which two are valid in a class that extends class A? (Choose two)
A. public int method1(int a, int b) { return 0; }
B. private int method1(int a, int b) { return 0; }
C. private int method1(int a, long b) { return 0; }
D. public short method1(int a, int b) { return 0; }
E. static protected int method1(int a, int b) { return 0; }

310-035中的题目,标准答案是A,C

 

A不是重载,A是重写!也就是覆盖!
覆盖不能降低原方法的"可见度"

class A {
    protected int method1(int a, int b) { return 0; }
}

class B extends A {
    public int method1(int a, int b) { return 0; }
}

那么B中只有一个method1(int,int)方法!

--------------------------------------------
重载是:
当多个方法具有相同的名字而含有不同的参数时产生
那么对参数不同的调用,实际调用不同的方法
也可以理解为实际上有两个方法,名字同,参数不同!

class A {
    protected int method1(int a, int b) { return 0; }
}

class B extends A {
    private int method1(int a, long b) { return 0; }
}
那么B有method1(int,int)和method1(int,long)两个方法!

因为"是"两个方法,所以其实
class B extends A {
    PUBLIC int method1(int a, long b) { return 0; }
}
也是正确的

-------------------------------------------------------------------------

-------------

注意事项:

覆盖(不知道是不是OVERWRITE)注意
不能降低原方法的"可见度"

重载(不只道是不是OVERLOAD)注意
只有参数不同才能构成重载,"可见度",返回类型不同都不能构成方法的重载

重载不是:
重新写(载)

重载是:
多重(可能)载入 

原创粉丝点击