2012-08-10 2 views
1

Я код java с BlueJ для Mac. Я добавил библиотеку stdlib.jar (From princeton http://introcs.cs.princeton.edu/java/stdlib/). Перед добавлением этой библиотеки у меня был свой собственный класс с именем StdDraw.java (конкретный класс, который я использовал в проекте) и копировал/вставлял код. Я также скорректировал часть кода и добавил несколько новых строк. Поскольку я не могу редактировать код библиотек, как я могу переопределить или расширить классы библиотек, чтобы добавить дополнительные функции?Переопределение классов пользовательской библиотеки в Java

+1

Вы спрашиваете, как расширить класс? – gobernador

ответ

0

Просто расширить класс,

public MyClass extends ClassFromLib 

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

Я написал код ниже в этом редакторе, поэтому никаких обещаний, которые он выполняет, но, надеюсь, вы получите эту идею.

public Myclass { 
    private ClassFromLib cfl = new ClassFromLib(); 

    public void methodA(){ 
     //Do whatever you need here 
     cfl.methodA(); //Doesn't have to be the same name. 
     //Do whatever you need here 
    } 
} 
+0

Когда я попробовал это, он сказал: «Невозможно продлить окончательный класс». – Vasseurth

1

Поскольку классы библиотеки final, вы не можете их продлить. Другой вариант - обернуть их в свои собственные классы. Например, вы можете создать свой собственный класс рисования, который имеет экземпляр StdDraw, которому он делегирует. Для многих ваших методов вы можете просто вызвать соответствующий метод экземпляра StdDraw, или вы можете имитировать переопределение с помощью методов реализации самостоятельно.

Смежные вопросы