Я думал, что сделал это раньше, возможно, это было на C++. Вот ситуация.Передача абстрактного класса как параметра в java
public abstract class SuperClass
{
public methodname (SuperClass superc)
{
// do stuff
}
}
public class SubClass extends SuperClass
{
}
Если я называю это, я получаю сообщение об ошибке
SubClass subc1 = new SubClass();
SubClass subc2 = new SubClass();
subc1.methodname (subc2);
Он говорит мне, что не существует метод, называемый "MethodName (SubClass)". Он не хочет использовать часть SuperClass в SubClass и передать ее в параметре «имя метода (SuperClass)». Но если я удалю «абстрактное» ключевое слово, проблем нет.
Предоставляет ли java абстрактные классы в параметре?
Ваш метод не имеет типа возврата –
Ну, одна проблема заключается в том, что ваш метод methodname не имеет типа возврата. Это остановило бы класс от компиляции вообще. Вы имеете в виду «public void methodname (SuperClass superc)». Кроме того, похоже, вы пытаетесь определить два открытых внешних класса в одном файле. Java не позволит вам это сделать, вам нужно сделать отдельный файл или изменить видимость классов. – Vincent
Да, я думаю, что я ошибся. Но, возможно, это была аналогичная проблема, потому что сегодня я просто добавил «абстрактный» к моему базовому классу, и это не дает мне никаких ошибок. Я думал, что проблема была в параметре, потому что он сказал что-то вроде «не может использовать methodname (подкласс) с именем метода (суперкласс)» – larienna