java - 无法降低对象继承方法的可见性

标签 java final

我定义了以下两个类:

public abstract class Subject {

    private ArrayList<ClockObserver> clockObserverList = new ArrayList<ClockObserver>();


    public void attach(ClockObserver clockObserver) {
        // begin-user-code
        // TODO Auto-generated method stub
        clockObserverList.add(clockObserver);
        // end-user-code
    }
    public void dettach(ClockObserver clockObserver) {
        // begin-user-code
        // TODO Auto-generated method stub
        clockObserverList.remove(clockObserver);
        // end-user-code
    }

    protected void notify() {
        // begin-user-code
        // TODO Auto-generated method stub
        for(int i= 0; i < clockObserverList.size(); i++)
        {
            clockObserverList.get(i).update();
        }
        // end-user-code
    }
}

public class SystemClock extends Subject {
    private int hour;
    private int minute;
    private int second;
    public void setTime(int hour, int minute, int second) {
        this.hour = hour; 
        this.minute= minute; 
        this.second = second;
        notify();
    }
    public ClockTime getTime() {
         ClockTime clockTime = new ClockTime();
         clockTime.hour = this.hour;
         clockTime.minute = this.minute;
         clockTime.second = this.second;
        return clockTime;
    }
    public void displayTime() {

        System.out.println("Time is :" + this.hour + ":" + this.minute + ":" + this.second);
    }
}

我在通知函数中遇到以下错误:

Multiple markers at this line
    - Cannot override the final method from Object
    - overrides java.lang.Object.notify
    - Cannot reduce the visibility of the inherited method from 

即使我将其可见性从 protected 更改为公开,我仍然遇到以下错误:

Multiple markers at this line
    - Cannot override the final method from Object

你能帮我看看问题出在哪里吗?

最佳答案

在 Java 中,每个类都隐式扩展 Object 类,该类定义了一个名为 notify 的方法。因此,如果您在类中创建一个 notify 方法,编译器会认为您试图重写 Object.notify 方法,但事实显然并非如此。

只需重命名您的方法 notify 就可以了。

关于java - 无法降低对象继承方法的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29448108/

相关文章:

java - 如何在使用 gson 创建的 Json 中添加自定义对象

java - Spock 测试因 MissingPropertyException 失败

java - 在 Java 中什么是更快地传递参数或使用静态变量?

Java 代码片段 - 使用变量 Final - 需要解释

java - 从 websphere-liberty 16 迁移到版本 17 后出现 SSLHandshakeException

java - 在 java 中使用正则表达式检查字符串中的特殊字符

java - 关键字final有什么用?

Java final 字段编译时常量表达式

java - 删除 final 关键字如何改变程序的行为方式?

java - Maven中如何共享多个项目之间的项目依赖关系?