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