Добавить в корзинуПозвонить
Найти в Дзене
DEBAGanov

Java 348. Абстрактный класс должен иметь только абстрактные методы. Правда или ложь?

ЛОЖЬ. Абстрактные методы также могут иметь конкретные методы. Это утверждение - не совсем верно. Абстрактный класс может содержать как абстрактные методы, так и некоторую реализацию в виде обычных (неабстрактных) методов. Абстрактные методы - это методы без тела, которые определяются в абстрактном классе, но не реализуются в нем, а оставляются для реализации в его подклассах. С другой стороны, если класс содержит хотя бы один абстрактный метод, он должен быть объявлен как абстрактный класс. Это значит, что вы не можете создать экземпляр абстрактного класса напрямую, только его подклассы могут наследовать его методы и поля. Вот пример абстрактного класса, который содержит как абстрактный, так и неабстрактный метод: abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + " is eating.");
}
public abstract void makeSound();
}
class Dog extends Animal {
pub

ЛОЖЬ. Абстрактные методы также могут иметь конкретные методы.

Это утверждение - не совсем верно.

Абстрактный класс может содержать как абстрактные методы, так и некоторую реализацию в виде обычных (неабстрактных) методов. Абстрактные методы - это методы без тела, которые определяются в абстрактном классе, но не реализуются в нем, а оставляются для реализации в его подклассах.

С другой стороны, если класс содержит хотя бы один абстрактный метод, он должен быть объявлен как абстрактный класс. Это значит, что вы не можете создать экземпляр абстрактного класса напрямую, только его подклассы могут наследовать его методы и поля.

Вот пример абстрактного класса, который содержит как абстрактный, так и неабстрактный метод:

abstract class Animal {
protected String name;

public Animal(String name) {
this.name = name;
}

public void eat() {
System.out.println(name + " is eating.");
}

public abstract void makeSound();
}

class Dog extends Animal {
public Dog(String name) {
super(name);
}

public void makeSound() {
System.out.println(name + " says: Woof!");
}
}

public class Main {
public static void main(String[] args) {
Dog dog = new Dog("Buddy");
dog.eat();
dog.makeSound();
}
}

Здесь класс Animal объявлен как абстрактный, потому что он содержит абстрактный метод makeSound(). Он также содержит неабстрактный метод eat(), который имеет реализацию в этом классе. Класс Dog наследует Animal и реализует его абстрактный метод makeSound().

Таким образом, абстрактный класс может содержать как абстрактные методы, так и неабстрактные методы, но должен содержать хотя бы один абстрактный метод.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov