Абстрактный метод не абстрагирует класс - PullRequest
0 голосов
/ 16 марта 2019

Почему-то я получаю ошибку JNI для приведенного ниже кода при использовании тезисов.Этого не должно произойти, так как я думаю, что написал правильно.Может кто-нибудь, пожалуйста, взглянуть.

package Abstraction;

public class Abstraction1_After {
    public static void main(String[] args) {
        Iphone obj = new Iphone();
        Samsung obj1 = new Samsung();
        showPrice(obj);
    }


    public static void showPrice(Phone obj) {
        obj.showPrice();
    }
}

abstract class Phone {
    public abstract void showPrice();
}


class Iphone extends Phone {
    public void IphonePrice() {
        System.out.println("Price of Iphone Xr is 500€");
    }
}


class Samsung extends Phone {
    public void Samsungs9Price() {
        System.out.println("Price of Samsung S9 is 600€");
    }
}

1 Ответ

1 голос
/ 16 марта 2019

Ваш класс Iphone наследует абстрактный метод showPrice () от класса Phone. Вы должны переопределить его, так как неабстрактный класс не может иметь абстрактный метод

Вы, вероятно, хотите что-то вроде этого:

class Iphone extends Phone {
    public void showPrice() {   
        System.out.println("Price of Iphone Xr is 500€");
    }
}

Если вы пытаетесь переопределить метод, вы должны сообщить об этом компилятору, дав новому методу то же имя. Так что просто измените имя метода, чтобы оно было таким же, как и у родительского метода, и все будет хорошо.

То же самое относится к Samsung классу курса

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