【问题标题】:java code control program not compiling. class A, class B, class C,java代码控制程序未编译。 A类、B类、C类、
【发布时间】:2018-01-02 10:43:53
【问题描述】:
class A implements Once {
    
    public void one () {
        System.out.println("A.1") ;}
    
    public void two () {
        one();
        System.out.println("A.2") ;}
    public void sayItOnce () {
        System.out.println("i'll say it once") ;}
    }

 class B extends A implements Once, Twice {
        
        public void one (int x) {
            System.out.println("B.1" + x) ;}
        
        public void two () {
            System.out.println("B.2") ;}
        
        public void sayItTwice () {
            System.out.println("\"i'll say it Twice") ;}
    }
 
 class C extends A {

        public void one() {
            System.out.println("C.1") ;}
    }
 
 interface Once {
        public void sayItOnce ();

    }
 interface Twice {
        public void sayItTwice ();
    }
`

这是前一年的考试题,如果以下代码出现在使用 A、B 和 C 类的控制程序中,输出会是什么? (i) (ii) - (vi)

class control{

        //(i)
        A a1 = new B ();
        a1.two();
        
        //(ii)
        B b1 = new B();
        b1.one(4);
        b1.one();
        
        //(iii)
        Once r = new B();
        r.sayItOnce();
        
        //(iv)
        Twice b2 = new Twice();
        b2.sayItTwice();
        
        //(v)
        C c1 = new A();
        c1.two()
        
        //(vi)
        A a2 = new B();
        a2.sayItTwice();
        
        //(vii)
        A a3 = new C();
        a3.two();}

这就是我们得到的代码我想知道代码是错误的还是我遗漏了什么? 我收到这些错误

“需要标识符”a1.two();

"删除此令牌" b1.one(4);

“需要标识符”b1.one();

"需要标识符" r1.sayItOnce();

“需要标识符”b2.sayItTwice();

"类型不匹配无法从A转换为C" C c1 = new A();

"需要标识符" c.two();

“需要标识符”a2.sayItTwice();

“需要标识符”a3.two();

这就是所有错误,显然主要错误是“预期标识符”我不知道如何解决这个问题。 任何帮助将不胜感激。

【问题讨论】:

  • 如果这真的是给你的代码并且问题是“输出是什么”,答案显然是没有输出,因为类控件不是有效的 java 代码。方法调用在类的那个地方是无效的。它根本没有运行任何代码的主要方法。

标签: java inheritance interface extends


【解决方案1】:

您不能编译任何不在方法中的 Java 代码。像这样包装这些语句:

class Control{
  void x(){
    //(i)
    A a1 = new B ();
    a1.two();
    //...

  }
}

【讨论】:

    【解决方案2】:

    在 Control 类中,代码是这样编写的,没有任何方法或代码块。首先,将代码放在main方法或某个方法中来编译这个程序。

    关于这个错误,"Type mismatch cannot convert from A to C" C c1 = new A(); ---> 我们不能将父类的对象直接放入子类引用中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      相关资源
      最近更新 更多