Відповіді:
Звичайно.
Оголошення реферату класу означає лише те, що ви не дозволяєте йому самостійно інстанціювати його.
Оголошення методу абстрактним означає, що підкласи повинні забезпечувати реалізацію цього методу.
Ці два є окремими поняттями, хоча очевидно, що ви не можете мати абстрактний метод у неабстрактному класі. Ви навіть можете мати абстрактні заняття final
методами, але ніколи навпаки.
Так, ви можете це зробити. Чому ви просто не спробуйте це зробити?
Так, ти можеш. Абстрактний клас, який використовується в java, означає, що ви не можете створити об'єкт класу. І абстрактним методом підкласи повинні забезпечити реалізацію цього методу.
Таким чином, ви можете легко визначити абстрактний клас без будь-якого абстрактного методу.
Що стосується прикладу:
public abstract class AbstractClass{
public String nonAbstractMethodOne(String param1,String param2){
String param = param1 + param2;
return param;
}
public static void nonAbstractMethodTwo(String param){
System.out.println("Value of param is "+param);
}
}
Це добре.
ТАК Ви можете створити абстрактний клас з будь-якого абстрактного методу. Найкращим прикладом абстрактного класу без абстрактного методу є HttpServlet
Абстрактний метод - метод, який не має тіла, Якщо ви оголосили хоча б один метод у класі, клас повинен бути оголошений як абстрагуйте його обов'язковим, але якщо ви оголосили абстрактний клас його не обов'язковим, щоб оголосити абстрактний метод всередині класу.
Ви не можете створити об'єкти абстрактного класу, а це означає, що його неможливо створити.
Так, ви можете оголосити клас, який ви не можете інстанціювати, лише методами, які вже мають реалізацію. Це було б корисно, якщо ви хочете додати абстрактні методи в майбутньому або якщо ви не хочете, щоб клас був безпосередньо інстанційним, навіть якщо він не має абстрактних властивостей.
так, ми можемо оголосити абстрактний клас без будь-якого абстрактного методу. мета оголошення класу абстрактним - не інстанціювати клас.
тож два випадки
1) абстрактний клас з абстрактними методами.
ці типи класів, ми повинні успадкувати клас від цього абстрактного класу і перекрити абстрактні методи в нашому класі, наприклад: GenricServlet class
2) абстрактний клас без абстрактних методів.
цього типу класів, ми повинні успадкувати клас від цього абстрактного класу, напр .: HttpServlet класу має на меті робити, хоча якщо ви не реалізуєте свою логіку в дочірньому класі, ви можете отримати батьківську логіку
Так, ми можемо мати абстрактний клас без абстрактних методів, оскільки обидва є незалежними поняттями. Оголошення реферату класу означає, що його неможливо встановити самостійно і його можна лише підкласифікувати. Оголошення абстрактного методу означає, що метод буде визначений у підкласі.
Так, ви можете визначити абстрактний клас без абстрактного методу. Однак якщо методу всередині немає, можливо, краще скористатися інтерфейсом
так, ти можеш це зробити.
оголосити клас абстрактним означає, що клас не буде інстанціювати жоден інший клас.
і повинен бути принаймні один абстрактний метод всередині цього і значення цього, ви можете оголосити абстрактний метод у цьому класі, якщо ви не декларуєте метод, ніж його добре.
приклад:
public abstract class abs {
protected int cx = 0, cy = 0;
public void p() {
System.out.print("hello");
}
}
це буде працювати точно.
Так, ти можеш. Іноді вам можуть задати це запитання, що це робить це? Відповідь: іноді нам доводиться обмежувати клас від інстанціювання самостійно. У такому випадку ми хочемо, щоб користувач розширив наш клас Анотація та інстанціював дочірній клас
Ви можете, питання, на мій погляд, більше вам. Від самого початку я скажу, що важкої та швидкої відповіді немає. Зробіть правильно для вашої поточної ситуації.
Для мене успадкування означає відносини «є-а». Уявіть клас собак, який можна поширити на більш спеціалізовані під види (Ельзас, Пудель тощо). У цьому випадку правильне робити собачий клас собаки, оскільки підтипи - це собаки. Тепер давайте уявимо, що собакам потрібний нашийник. У цьому випадку успадкування не має сенсу: нісенітниця мати "є-а" відносини між собаками та нашийниками. Це, безумовно, відносини "має", комір є об'єктом співпраці. Зробити нашийник абстрактним просто для того, щоб собаки мали його, не має сенсу.
Я часто виявляю, що абстрактні класи, які не мають абстрактних методів, насправді виражають відношення "має". У цих випадках я зазвичай вважаю, що код можна краще врахувати без використання успадкування. Я також вважаю, що абстрактні класи, які не мають абстрактних методів, часто мають запах коду і, принаймні, повинні призводити до питань, що виникають під час огляду коду.
Знову ж таки, це цілком суб’єктивно. Цілком можуть виникати ситуації, коли абстрактний клас без абстрактних методів має сенс, це повністю залежить від інтерпретації та обґрунтування. Прийміть найкраще рішення для того, над чим ви працюєте.
Насправді немає сенсу, якщо абстрактний клас не має будь-якого абстрактного методу. Абстрактний клас - це як батько. У цього батька є деякі властивості та поведінка, коли ти як дитина хочеш бути дитиною батька, батько каже дитині (ти), що це має бути таким чином, це наш МОТО, і якщо ти цього не хочеш робити, ти не моя дитина.
WindowDecorator
іCoffeeDecorator
єabstract
класами, але жоденabstract
метод не включає .