java代码控制程序没有编译。 A级,B级,C级

时间:2018-01-02 10:43:54

标签: java inheritance interface extends

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();

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

2 个答案:

答案 0 :(得分:0)

您无法编译方法中不存在的任何Java代码。像这样包装这些陈述:

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

  }
}

答案 1 :(得分:0)

在Control类中,代码是在没有任何方法或代码块的情况下编写的。首先,将代码放在main方法或某些方法中来编译该程序。

关于此错误,"类型不匹配无法从A转换为C" C c1 = new A(); --->我们不能直接将父类的对象放入子类引用中。