17.子类重写权限不能低于父类权限,重写接口方法必须用public修饰

一、子类重写权限不低于父类权限。

子类重写父类方法权限不能低于父类权限:向上转型的权限应该越来越小,而不是变大。(如父类public修饰方法,而子类不能用protected修饰,必须要public修饰

Java规定的4种权限(从小到大排列):private、default(缺省)、protected 、public,在java中封装性的体现,需要权限修饰符来配合,按照访问权限从高到低的顺序排序如下:

(1)public:公共的,可以被任何类访问。在同一个包内或其他包中都可以使用。

        使用对象:类、接口、变量、方法
(2)protected:受保护的,可以被同一个包内的类和不同包中的子类访问。

        使用对象:变量、方法。
(3)default(也称为 package-private 或无修饰符):没有指定任何访问修饰符,只能被同一个             包内的类访问。如果某个类没有指定访问修饰符,则默认为 default 权限。

        使用对象:类、接口、变量、方法。
(4)private:私有的,只能被同一个类内部的其他方法访问。

        使用对象:变量、方法。

笔记:类和接口只能用public或不加权限修饰符(默认default)修饰。 

二、实现接口权限必须为public。

在 Java 中,接口中的方法默认都是 public 抽象方法,因此,实现接口的类中对于接口中的方法只能使用 public 访问修饰符来覆盖(即实现)该方法。这是因为,实现接口的类必须提供一个实现了接口中所有 public 抽象方法的具体方法,而接口中的方法默认被视为 public,其他访问修饰符(如 private、protected 或默认访问权限等)都会导致编译错误。

笔记:不管接口中方法的权限是什么,重写必须用public修饰,不然报错!

下面的就是验证例子: 

public interface a {
    default void b() {
        System.out.println("接口b");
    }
}
public class Dog extends Animal implements a{
    @Override
//这里必须用public修饰,不然报错!!!
    public void b() {
        System.out.println("方法dog");
    }
}

三、重写方法时,可以添加某些关键字。

父类方法:

子类重写:

运行结果:

当重写方法时,可以添加关键字,但需要注意以下几点:

  1. 访问权限不能更低:重写方法时,可以添加关键字,但是访问权限不能比父类中被重写方法的访问权限更低。

  2. 不能使用static关键字:重写方法不能使用 static 关键字,因为静态方法是属于类的,而不是对象的,因此它们不是多态的一部分。

  3. 异常声明不能更多:重写方法时,如果子类中的方法声明了比父类中被重写方法更多的异常类型,编译器会报错。这是因为 Java 不允许在子类中抛出比父类方法更多的异常,这会破坏多态性。

  4. 可以使用其他修饰符:除了上述限制外,重写方法时可以添加其他修饰符,比如 final、synchronized 或者 abstract 等,根据需要来选择合适的修饰符。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值