Что вызывает ошибки в моем абстрактном классе? - PullRequest
0 голосов
/ 25 октября 2018
public abstract Shape {
    public abstract void draw();
    public static void main(String[] args) { 
        ArrayList shapes = new ArrayList(); 
        shapes.add(new Shape()); // Line ONE
        shapes.get(0).draw(); // Line TWO
    } 

    public class Square extends Shape { 
        public void draw () {
            System.out.println(“The square is being drawn.”);
        }
}

Может кто-нибудь помочь объяснить ошибку в строке ОДИН?Это исправимо?

Даже если указанная выше строка исправлена, строка ВТОРАЯ строка все равно выдаст ошибку.Как я могу исправить вторую строку?

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

Три ошибки:

1) public abstract Shape { должно быть public abstract class Shape {

2) shapes.add(new Square()); // Line ONE, поскольку форма является абстрактной и не может быть создана.

3)((Square)shapes.get(0)).draw(); // Line TWO;, так как shape.get (0) возвращает экземпляр Object, поэтому требуется приведение к Square.

0 голосов
/ 25 октября 2018

На самом деле есть четыре ошибки:

1) public abstract Shape { должно быть public abstract class Shape {

2) shapes.add(new Shape()); // Line ONE, потому что форма абстрактна и не может быть реализована.

3) shapes.add(new Square()); // Line ONE Мы не можем использовать метод non-static в области видимости static, пока вы не пометите его как статический.

4) ((Square)shapes.get(0)).draw(); // Line TWO;, так как shape.get (0) возвращает экземпляр объекта, поэтому приведениена площадь не требуется.

0 голосов
/ 25 октября 2018

Вы не можете создать экземпляр абстрактного класса, что вы и делаете со своими new Shape()

Абстрактные классы - это основы, на которых вы строите, вы расширяете их и создаете конкретные классы, которые вы сможетесоздать экземпляр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...