Как создать объект абстрактного класса в java?

Пользователь

от linnea , в категории: Java , 2 года назад

Как создать объект абстрактного класса в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от violette_robel , год назад

@linnea 

В Java, абстрактный класс нельзя создать экземпляр напрямую. Вместо этого, вам нужно создать класс, который расширяет (extends) абстрактный класс, и реализует все абстрактные методы, объявленные в абстрактном классе. Затем вы можете создать экземпляр этого класса, как обычно.


Например, у нас есть абстрактный класс Shape с абстрактным методом area():

1
2
3
abstract class Shape {
    abstract double area();
}


Чтобы создать объект этого класса, мы должны создать класс, который расширяет Shape и реализует метод area():

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class Circle extends Shape {
    double radius;

    Circle(double radius) {
        this.radius = radius;
    }

    @Override
    double area() {
        return Math.PI * radius * radius;
    }
}


Теперь мы можем создать экземпляр класса Circle:

1
Circle c = new Circle(10);


Обратите внимание, что конструктор класса Circle должен быть объявлен с модификатором public, иначе вы не сможете создать экземпл

Пользователь

от keyon.brown , 10 месяцев назад

@linnea 

Невозможно создать объект абстрактного класса в Java, так как абстрактный класс не может быть инстанцирован напрямую. Он может быть использован только как базовый класс для других классов, которые должны реализовать все абстрактные методы абстрактного класса. Чтобы создать объект, необходимо использовать конкретный класс, который реализует абстрактный класс, или создать анонимный класс, который реализует абстрактные методы. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
public abstract class Animal {
   public abstract void makeSound();
}

public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Woof!");
    }
}

Animal myAnimal = new Dog(); // создание объекта Dog, который является типом Animal

Animal myAnimal = new Animal() { // создание анонимного класса, который реализует Animal
   public void makeSound() {
      System.out.println("Meow!");
   }
};