Java面向对象深入:权限测试与方法重写详解

需积分: 5 0 下载量 105 浏览量 更新于2024-06-19 收藏 1.87MB PDF 举报
"Java面向对象的进阶教程,涵盖了四种权限修饰符(private、default、protected、public)的详细测试和方法重写(override/overwrite)的概念及应用。本教程通过实例解析了不同权限修饰符在类内部、同一包内、不同包的子类和非子类中的访问限制,并提供了方法重写的相关规则和面试题。" 一、四种权限修饰 在Java中,有四种权限修饰符用于控制类的成员(属性和方法)的访问权限: 1. private:私有,只能在声明它的类内部访问。 2. default(无修饰符):默认权限,仅在同一包内的类之间可访问。 3. protected:受保护的,允许在同一包内以及不同包的子类中访问。 4. public:公共,可以在任何地方访问。 二、测试四种权限修饰 1. 同一个类:所有权限修饰的成员都可以被访问。 2. 同一个包:默认、protected和public的成员可被访问,但private成员不可。 3. 同一个包子类:private成员不可访问,但default、protected和public的成员可访问。 4. 不同包子类:private成员不可访问,default成员仅在子类和父类同包时可访问,protected成员可访问,public成员始终可访问。 5. 跨包非子类:private成员不可访问,default成员不可访问,protected成员仅在子类时可访问,public成员始终可访问。 三、方法的重写(overwrite/override) 1. 引入:当子类继承父类并定义与父类相同签名的方法时,就发生了方法重写。 2. 举例: - 举例1:子类方法的返回类型、参数列表和异常抛出与父类完全一致。 - 举例2:子类方法可以降低访问权限,但不能提高。 - 举例3:子类方法可以减少或不抛出异常,但不能增加。 3. 方法重写应遵循的规则: - 子类方法签名必须与父类方法完全匹配(包括返回类型、方法名和参数列表)。 - 子类方法的访问权限不能更低。 - 子类方法不能抛出更广泛的检查异常。 - 如果父类方法被final或static修饰,则无法重写。 4. 面试题:通常涉及如何判断是否为重写、重写的注意事项等。 四、方法的重写--练习题 1. 练习1:设计一个例子,演示如何正确重写父类方法。 2. 练习2:设计一个具有特定条件(如异常处理、返回值变化)的方法重写场景。 实际开发中,public和private是最常用的权限修饰符。不指定权限修饰符(默认权限)通常用于包内协作,而protected在需要子类继承时使用。属性通常设为private并通过getter和setter方法访问,方法通常是public,常量则声明为public。