简单明了——重载与重写区分及修饰符权限问题

方法的重载:

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方法和属性,也只能在该子类中访问(除非重写方法或属性)

经验分享 程序员 微信小程序 职场和发展