【问题标题】:Does the addition of a colon after class name cause an error?在类名后添加冒号会导致错误吗?
【发布时间】:2018-07-09 09:29:36
【问题描述】:

我在 Java 考试中遇到了一个问题,要求我们在提供的代码中找到 四个 编译错误,如下所示:

interface Movable{
    protected void g(){System.out.println("Hello")};
}
class Vehicle : java.lang.Object{
    private int x;
}
public class Main extends Vehicle, Movable{
    public static void main(String[] args) {
        System.out.println("this is main");     
    }
    public void g() {
        this.x= 2;
    }
}

现在,我已经设法找到所有四个错误,接口中的“受保护”、接口中的方法主体、缺少的关键字“Implements”以及无法访问的变量 x G()。 我的问题是关于这部分的

Vehicle : java.lang.Object

当我在修复四个错误后尝试运行此代码时,它在此行中显示另一个错误,显示“{”预计在 Vehicle 之后。

这真的是一个错误还是这是在 java 中扩展类的另一种方式?

【问题讨论】:

  • 真是个错误
  • 相信编译器。它比你更懂语言。该语法是 C++、C#、Kotlin,但不是 Java。
  • 除上述错误外,至少还有两个错误(在调用System.out.println 之后没有;,但在结束} 之后有一个函数体)。如果考试认为该代码中只有四个错误,您可能需要考虑其背后的人是否真的是值得学习的人。 :-)(但如果他们说至少四个错误,那就不同了。)
  • 实现一个接口,而不是扩展它。此外,一个类不能扩展两个类。
  • 如果将protected 替换为default,则两个错误将成为一个错误,因为现在允许实现。冒号: 绝对是个错误。

标签: java syntax compiler-errors


【解决方案1】:

在 Java 中,您使用 extends 关键字来子类化其他类,而 implements 用于接口。冒号用于 C# 和其他一些语言。

【讨论】:

    【解决方案2】:

    您错过了一个错误 - 在 Java 中只有一个继承,因此 Main 类不能同时扩展 Vehicle 和 Movable。 Vehicle 类中的分号表示法也不是有效的 Java 语法。

    【讨论】:

      猜你喜欢
      • 2016-08-11
      • 1970-01-01
      • 2012-08-06
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多