Установка:
public interface Predicate<T> {
public boolean filter(T t);
}
void filterCollection(Collection<T> col, Predicate<T> predicate) {
for (Iterator i = col.iterator(); i.hasNext();) {
T obj = i.next();
if (predicate.filter(obj)) {
i.remove();
}
}
}
использование:
List<MyObject> myList = ...;
filterCollection(myList, new Predicate<MyObject>() {
public boolean filter(MyObject obj) {
return obj.shouldFilter();
}
});
Если вы хотите использовать метод / свойство исходного класса, вы можете расширить его, но должны использовать другое имя, иначе вы получите сообщение об ошибке повторного объявления класса.
В основном:
class template {}
/* both fail with "cannot redeclare class template */
class template extends template {}
class template {}
Я почти уверен, что вы не можете. Я предлагаю вам сделать следующее:
class Template extends TemplateBase
{
// code
}
подробнее на: http://www.php.net/manual/en/language.oop5.php