方法的重载:
1.方法名必须相同
2.参数列表必须不同
3.其他修饰符可以相同,也可以不同
4.可以抛出不同异常
方法的重写:
1.方法名、参数列表、返回值类型都必须相同
2.访问修饰符必须大于或等于被重写的方法
3.重写的方法中,不能抛出新的异常或被重写的方法更多、更大的异常,但一定会抛出异常。也就是说,只能抛出相同的异常或是被重写方法异常的子异常,还可以抛出非编译异常(RuntimeException)
4.重写方法只会存在于具有继承关系的子类中,而当父类中的方法用private修饰时,即使子类中有重名方法,也不叫方法的重写
5.非静态方法不能被重写成静态方法
访问权限:
修饰词:根据作用范围来进行划分
private | 默认的(default/friendly) | protected | public |
---|---|---|---|
同一个类中 | 可见 | 可见 | 可见 |
同一个包中 | 不可见 | 可见 | 可见 |
不同的包中有继承关系 | 不可见 | 不可见 | 可见 |
不同的包中没有继承关系 | 不可见 | 不可见 | 不可见 |
四种访问权限:
1.public:只能修饰类、方法(含构造方法)、成员变量。其修饰的部分所有人都能访问;
2.默认修饰符(friendly):只能修饰类、方法(含构造方法)、成员变量。其修饰的部分只有同一包内的类能访问,
对于这个包之外的所有类,这个成员是private的;
3.private:只能修饰方法(含构造方法)、成员变量。其修饰的部分只能在自身类中访问。例如将某类的构造方法设置为private,
那么在其它类中就不能调用“new”来创建该类的实例,通常在该类中会对外提供一种方法,该方法能返回该类的实例;
再例如我们经常将成员变量设置为private的,对外提供set/get方法对其进行访问,在set/get方法中可做一些比如权限检测等操作,
而不是将域直接暴露给所有用户;
4.protected:只能修饰方法(含构造方法)、成员变量。
在同一包中具有包访问权限,相当于默认访问权限;
注意事项:在子类中,可继承不同包内父类的protected方法和属性,也只能在该子类中访问(除非重写方法或属性)