По какой-то причине я, похоже, не способен реализовать абстрактный класс за пределами пакета, в котором он определен. Абстрактный класс в пакете1 не может быть реализован в классе в пакете2. Почему это не законная Java?Невозможно реализовать абстрактный класс из другого пакета
package com.stackoverflow.abstraction.package1;
abstract public class BaseClass {
abstract Long foo();
}
package com.stackoverflow.abstraction.package1;
public class Implement1 extends BaseClass {
@Override
Long foo() {
return null;
}
}
package com.stackoverflow.abstraction.package2;
import com.stackoverflow.abstraction.package1.BaseClass;
/** Compiling this class will output
* - Implement2 is not abstract and does not override abstract method foo() in BaseClass
* - error: method does not override or implement a method from a supertype
*/
public class Implement2 extends BaseClass {
@Override
Long foo() {
return null;
}
}
Продолжительность: OS X 10.6.8 - Java (TM) SE Runtime Environment (сборка 1.6.0_31-b04-415-10M3646) - OpenJDK Runtime Environment (сборка 1.7.0-U4-b13 -20120301) Пробовал обе версии Java. Не в то же время, конечно :)
@brimborium: Исправлено, спасибо. –
Вы уверены, что можете быстро расширить свой ответ. Смешно видеть, как он развивается из одной строки :) – oligofren
@oligofren: Я не думаю, что этот конкретный был когда-либо одной строкой, но да - я начинаю с голых костей, а затем добавляю больше контекста, предложений, ссылок и т. Д. , –