Класът „XXX“ трябва или да бъде обявен за абстрактен, или да се прилага абстрактен метод „xxx“

Class Xxx Must Either Be Declared Abstract



Наскоро въведен външен пакет jar, този проблем възниква при наследяване на абстрактни класове, Class'XXX 'трябва или да бъде обявен за абстрактен, или да внедри абстрактния метод'xxx', тук IDEA дава подсказка, този клас трябва да бъде деклариран като абстрактен или да се приложи родителският клас Методът 'xxx' (абстрактен метод).
изображение

проблем:

Тук не искаме да декларираме, че подкласът е абстрактен клас, също Implemented the abstract method of the parent class, но все пак имаме този проблем.

Решение:

По-късно се установи Scope Проблемът, абстрактният метод на родителския клас не показва, че Public, но по подразбиране default, И тъй като методът на родителския клас е External package абстрактен клас, който води до Cannot inherit its default abstract method



да обобщим:

Обърнете внимание, когато наследявате външен абстрактен клас, трябва да се въведе абстрактният метод на родителския клас public Ключова дума, за да се избегнат други хора, използващи ненормално след опаковане.




Приложение: Прегледайте знанията за абстрактни класове и обхват

Абстрактен клас

  • Всички абстрактни класове трябва да имат подкласове (абстрактните и окончателните не могат да се появяват едновременно, ако се появяват едновременно, ще се отчете грешка по време на компилиране) класовете, модифицирани от final, не могат да имат подкласове (терминатори)
  • Когато подкласът на абстрактния клас не е абстрактен клас, подкласът на абстрактния клас трябва да замени всички абстрактни методи на абстрактния клас
  • Абстрактните класове могат да бъдат създадени чрез подкласиране, а абстрактните класове не трябва директно да създават екземпляри на обекти (независимо дали има абстрактни методи)
  • Тъй като абстрактните класове принуждават подкласовете да заменят абстрактните методи, абстрактните и частните не могат да се използват заедно.

Обхват

Обхват и видимост Текущ клас Същият пакет Подклас Други пакети
публично
защитен ×
по подразбиране × ×
частни × × ×

защитен и по подразбиране

  • protected: променлива на член на името на таблицата или метод на самия клас, с него In the same package Другите класове от този клас са видими в подкласовете на този клас в други пакети
  • По подразбиране: Показва, че променливата или методът член има само себе си и своето местоположение In the same package Класът е видим.
    Ако родителският клас и дъщерният клас са в един и същ пакет, дъщерният клас има достъп до променливите по член по подразбиране или методите на родителския клас If the parent class and the child class are in different packages, there is no access permission
  • Частно и защитено не може да се използва за промяна на класа

Разликата между абстрактното и инструментите

разликата Абстрактен клас интерфейс
Ключова дума абстрактно интерфейс
Член променливи Няма специални изисквания и ограничения за променливите-членове Може да съдържа само публични статични променливи (по подразбиране public static final Модификация)
метод Може да съдържа всеки метод Може да съдържа само и абстрактни методи (по подразбиране от public abstract Модификация)
използване Класът може да наследи само един абстрактен клас Един клас може да реализира множество интерфейси

справка:
1, В ямата Java (осем) резюме и приложения
две, Какви са обхватите в Java
3, Абстрактен клас