2015-02-21 1 views
2

Я хочу расширить последний класс в java, чтобы добавить новый метод в унаследованный класс. Какую модель мне следует использовать?Эквивалент расширения конечного класса для добавления дополнительных функций в java

, например:

final class foo { 
} 

Foo является конечный класс в Java.

Я хочу расширить это в встроенном классе, чтобы добавить дополнительную функциональность.

class bar extends foo { 
    dosomething(){ 
    } 
} 

Я не могу продлить окончательный класс. что я должен делать, чтобы bar действовал как foo с добавленной функциональностью?

Есть ли образец для реализации этой функции? Чтобы он выполнял все функции конечного класса с добавленной функциональностью

+0

картина называется агрегация (ака состав), и вы можете узнать больше об этом в разделе [агрегирование против наследования] (http://stackoverflow.com/a/269535/1594449). Как отметил @beresfordt, у вас нет выбора, кроме как заполнить/составить в этом обстоятельстве, потому что вы имеете дело с окончательным классом. И нет, нет более простого способа сделать это. – gknicker

ответ

2

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

редактирования: Также смотрите обсуждение Equivalent to extending a final class in Java

final class Foo { 
    public String getSomething() { 
     // 
    } 
} 

class Bar { 
    Foo foo; 

    public Bar() { 
     foo = new Foo(); 
    } 

    public String getSomething() { 
     foo.getSomething(); 
    } 

    public String doSomethingElse() { 
     // 
    } 
} 
+1

Я получил вашу мысль, но потом мне нужно написать каждый метод класса foo в классе bar. так что класс bar может вызывать тот же метод на объекте foo. Есть ли лучший способ достичь этого? – user2465908

+1

Не совсем, воспользуйтесь возможностью, чтобы улучшить свои навыки регулярного выражения; это 30 секунд регулярного выражения или мир копирования/вставки, если у конечного класса много методов. – beresfordt

+0

Спасибо за ваши данные. Я знаю, что могу скопировать пасту. Я искал шаблон, чтобы сделать это, где я могу избежать копирования пасты и перезаписи – user2465908