Ожидаемая ошибка класса, интерфейса или enum в следующем коде при записи в Android Studio; где проблемы? [Дубликат]

Самый непонятый модификатор доступа в Java - protected. Мы знаем, что он похож на модификатор по умолчанию с одним исключением, в котором подклассы могут его видеть. Но как? Вот пример, который, надеюсь, прояснит путаницу:

  • Предположим, что у нас есть 2 класса; Father и Son, каждый в своем собственном пакете:
    package fatherpackage;
    
    public class Father
    {
    
    }
    
    -------------------------------------------
    
    package sonpackage;
    
    public class Son extends Father
    {
    
    }
    
  • Давайте добавим защищенный метод foo() в Father.
    package fatherpackage;
    
    public class Father
    {
        protected void foo(){}
    }
    
  • Метод foo() можно вызвать в 4 контекстах: внутри класса, который находится в том же пакете, где foo() определен (fatherpackage):
    package fatherpackage;
    
    public class SomeClass
    {
        public void someMethod(Father f, Son s)
        {
            f.foo();
            s.foo();
        }
    }
    
    Внутри подкласса , в текущем экземпляре через this или super:
    package sonpackage;
    
    public class Son extends Father
    {
        public void sonMethod()
        {
            this.foo();
            super.foo();
        }
    }
    
    В ссылке, тип которой является одним и тем же классом:
    package fatherpackage;
    
    public class Father
    {
        public void fatherMethod(Father f)
        {
            f.foo(); // valid even if foo() is private
        }
    }
    
    -------------------------------------------
    
    package sonpackage;
    
    public class Son extends Father
    {
        public void sonMethod(Son s)
        {
            s.foo();
        }
    }
    
    В ссылке, тип которой является родительским классом, и внутри пакет, где foo() определен (fatherpackage) [Это может быть включено внутри контекста no. 1]:
    package fatherpackage;
    
    public class Son extends Father
    {
        public void sonMethod(Father f)
        {
            f.foo();
        }
    }
    
  • Следующие ситуации недействительны. В ссылке, тип которой является родительским классом, и вне определен пакет fatherpackage:
    package sonpackage;
    
    public class Son extends Father
    {
        public void sonMethod(Father f)
        {
            f.foo(); // compilation error
        }
    }
    
    : не подкласс внутри пакета подкласса наследует защищенные члены от своего родителя и делает их частными для не-подклассов):
    package sonpackage;
    
    public class SomeClass
    {
        public void someMethod(Son s) throws Exception
        {
            s.foo(); // compilation error
        }
    }
    
12
задан Azulflame 9 October 2012 в 16:49
поделиться

6 ответов

Вы пропустите объявление класса.

public class DerivativeQuiz{
   public static void derivativeQuiz(String args[]){ ... }
}
18
ответ дан azendh 27 August 2018 в 04:15
поделиться

Посмотрите на определение функции. Если вы забыли использовать «()» после объявления функции где-нибудь, вы получите много ошибок в том же формате:

 ... ??: class, interface, or enum expected ...

А также вы забыли закрытие скобки после завершения определения вашего класса или функции. Но обратите внимание, что эти недостающие скобки не являются единственной причиной такого типа ошибок.

0
ответ дан Erfankam 27 August 2018 в 04:15
поделиться

Вы забыли свое объявление класса:

public class MyClass {
...
4
ответ дан NullPoiиteя 27 August 2018 в 04:15
поделиться

класс, интерфейс или enum expected

Вышеприведенная ошибка даже возможна, если инструкция импорта пропущена. Правильное утверждение - «import com.company.HelloWorld;»

Если по ошибке при написании и редактировании кода это не написано как «t com.company.HelloWorld;»

компилятор покажет «класс, интерфейс или ожидаемое перечисление»

0
ответ дан Prakhyat 27 August 2018 в 04:15
поделиться

Каждый метод должен находиться внутри класса. Ваш метод derivativeQuiz находится за пределами класса.

public class ClassName {

 ///your methods
}
8
ответ дан Suraj Chandran 27 August 2018 в 04:15
поделиться

основной класс должен быть объявлен в вашем классе следующим образом:

public class derivativeQuiz_source{
    // bunch of methods .....

    public static void main(String args[])
    {
        // code 
    }
}
-2
ответ дан Uwe Allner 27 August 2018 в 04:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: