鱼C论坛

 找回密码
 立即注册
查看: 660|回复: 2

[已解决]java关于final的用法

[复制链接]
发表于 2023-11-25 09:09:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
修改给定的程序,使得程序能顺利运行,且结果如下:
speedlimit=120
running safely with 100kmph
running safely with 100kmph

根据提示,在下面编辑器中根据编译的错误提示修改源程序。
/* 请在下面的 Begin 和 end之间修改源程序。 
  不可以修改 final 变量的值
  final方法,不可以重写
  不可以定义final 类
*/
public class Main {
    public static void main(String args[]) {
        Bike1 obj = new Bike1();
        obj.run();

        Honda honda = new Honda();
        honda.run();

        Yamaha yamaha = new Yamaha();
        yamaha.run();
    }
}

/********** Begin *********/
class Bike1 {
    final int speedlimit = 90;

    void run() {
        speedlimit = 120; 
        System.out.println("speedlimit=120");
    }
}

class Bike2 {
    final void run() {
        System.out.println("running");
    }
}

class Honda extends Bike2 {
    void run() { 
        System.out.println("running safely with 100kmph");
    }
}

final class Bike3 {
}

class Yamaha extends Bike3 { 
    void run() {
        System.out.println("running safely with 100kmph");
    }
}
/********** end *********/
最佳答案
2023-11-25 09:48:45
错误如下:

在Bike1类中,speedlimit被声明为final,这意味着它的值一旦被初始化就不能再改变。所以,我们不能在run方法中修改speedlimit的值。

在Honda类中,程序试图重写Bike2类的run方法,但是run方法在Bike2类中被声明为final,这意味着它不能被重写。

在Yamaha类中,程序试图继承Bike3类,但是Bike3类被声明为final,这意味着它不能被继承。

代码:
public class Main {
    public static void main(String args[]) {
        Bike1 obj = new Bike1();
        obj.run();

        Honda honda = new Honda();
        honda.run();

        Yamaha yamaha = new Yamaha();
        yamaha.run();
    }
}

class Bike1 {
    final int speedlimit = 90;

    void run() {
        System.out.println("speedlimit=" + speedlimit);
    }
}

class Bike2 {
    void run() {
        System.out.println("running");
    }
}

class Honda extends Bike2 {
    @Override
    void run() {
        System.out.println("running safely with 100kmph");
    }
}

class Bike3 {
    void run() {
        System.out.println("running");
    }
}

class Yamaha extends Bike3 {
    @Override
    void run() {
        System.out.println("running safely with 100kmph");
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-25 09:09:52 | 显示全部楼层
/* 请在下面的 Begin 和 end之间修改源程序。
  不可以修改 final 变量的值
  final方法,不可以重写
  不可以定义final 类
*/
public class Main {
    public static void main(String[] args) {
        Bike1 obj = new Bike1();
        obj.run();

        Honda honda = new Honda();
        honda.run();

        Yamaha yamaha = new Yamaha();
        yamaha.run();
    }
}

/********** Begin *********/
class Bike1 {
    final int speedlimit = 90;

    void run() {
        // 不可以修改final变量的值
        System.out.println("speedlimit=" + speedlimit);
    }
}

class Bike2 {
    final void run() {
        System.out.println("running");
    }
}

class Honda extends Bike2 {
    // 不可以重写final方法
    // void run() {
    //     System.out.println("running safely with 100kmph");
    // }
}

final class Bike3 {
}

class Yamaha extends Bike3 {
    void run() {
        System.out.println("running safely with 100kmph");
    }
}
/********** end *********/
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-25 09:48:45 | 显示全部楼层    本楼为最佳答案   
错误如下:

在Bike1类中,speedlimit被声明为final,这意味着它的值一旦被初始化就不能再改变。所以,我们不能在run方法中修改speedlimit的值。

在Honda类中,程序试图重写Bike2类的run方法,但是run方法在Bike2类中被声明为final,这意味着它不能被重写。

在Yamaha类中,程序试图继承Bike3类,但是Bike3类被声明为final,这意味着它不能被继承。

代码:
public class Main {
    public static void main(String args[]) {
        Bike1 obj = new Bike1();
        obj.run();

        Honda honda = new Honda();
        honda.run();

        Yamaha yamaha = new Yamaha();
        yamaha.run();
    }
}

class Bike1 {
    final int speedlimit = 90;

    void run() {
        System.out.println("speedlimit=" + speedlimit);
    }
}

class Bike2 {
    void run() {
        System.out.println("running");
    }
}

class Honda extends Bike2 {
    @Override
    void run() {
        System.out.println("running safely with 100kmph");
    }
}

class Bike3 {
    void run() {
        System.out.println("running");
    }
}

class Yamaha extends Bike3 {
    @Override
    void run() {
        System.out.println("running safely with 100kmph");
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 20:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表