Ошибка - конструктор суперкласса в Eclipse с Java 8 - PullRequest
0 голосов
/ 19 января 2020

Я кодирую в eclipse и впервые в java, унаследованный метод и вызываю родительский метод с ключевым словом super(), показывающим ошибку в Java -8, также метод new Child(); также показывает ошибку. Имя файла: Пример. java

public class Example{
        class Parent{
            void parentMethod(){
                System.out.println("Parent Method");
            }
            void parentMethod(int a){
                    System.out.println("Parent Method: One Argument");
            }
            void parentMethod(int a, int b){
                        System.out.println("Parent Method: Two Argument");
            }
        }
       class Child extends Parent{
            void childMethod() {
                super(10);
                System.out.println("Child Method");
            }
        }
        public static void main(String[] args) {
            new Child();
            System.out.println("Main Class Method: no argument");
        }
    }

выдает ошибку в затмении:

in line 15: Multiple markers at this line
    - Line breakpoint:Public$Child [line: 15] - 
     childMethod()

in line 20: No enclosing instance of type Public is accessible. Must qualify the allocation with an enclosing 
 instance of type Public (e.g. x.new A() where x is an instance of Public).

. ; .

1 Ответ

1 голос
/ 19 января 2020
  • super(10); можно использовать только внутри конструктора (не внутри метода) для вызова конструктора суперкласса (расширяемого класса), например, если у вас есть Parent(int a) { ... } , вы можете сделать Child() { super(10); }; или если вы хотите вызвать существующий метод суперкласса (вместо несуществующего суперконструктора с одним числовым параметром) используйте super.parentMethod(10); вместо
  • new Child(); не работать внутри static метода для не static вложенного класса; не статичный c внутренний класс принадлежит экземпляру внешнего класса: здесь будет работать new Example().new Child();; в качестве альтернативы, поскольку в этом примере вложенные классы не используют методы экземпляра и поля Example, вы можете создать классы Parent и Child stati c, чтобы исправить ошибку: static class Parent{ и static class Child extends Parent{
...