powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Декаратор
3 сообщений из 3, страница 1 из 1
Декаратор
    #38125999
EDUARD_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть основной компонент, Кофе.
Код: java
1.
2.
3.
4.
5.
6.
7.
public class Coffee {
    public int cost = 1;
    
    public int getCost(){
        return cost;
    }
}



Хочу "декарировать" этот объект, пишу класс Молоко
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class Milk extends Coffee {
    Coffee _c;

    public Milk(Coffee c){
        _c = c;
    }
    
    public int getCost(){
        return _c.getCost() + 5;
    }
}



и

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class Whip extends Coffee {
    Coffee _c;
    
    public Whip(Coffee c){
        _c = c;
    }
    
    public int getCost(){
        return _c.getCost() * 2;
    }
}



теперь могу спокойно накладывать нужные декораторы
Код: java
1.
2.
3.
4.
5.
    public static void main(String[] args) throws SOAPException, IOException {
        Coffee c = new Milk(new Whip(new Coffee()));
        
        System.out.println(c.getCost());
    }



все хорошо, теперь представим, что класс Coffee имел бы конструктор

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class Coffee {
    public int cost = 1;
    
    public Coffee(int i){
        cost = i;
    }
    
    public int getCost(){
        return cost;
    }
}



теперь компилятор ругается
авторException in thread "main" java.lang.RuntimeException: Uncompilable source code - constructor Milk in class decarators.Milk cannot be applied to given types;
required: decarators.Coffee
found: decarators.Whip
reason: actual argument decarators.Whip cannot be converted to decarators.Coffee by method invocation conversion
at javaapplication1.JavaApplication1.main(JavaApplication1.java:31)


чото я туплю, почему я не могу у дочернего класса создать свой конструктор?

Пысы, я конечно понимаю, что нужно юзать Интерфейс, но тогда как быть, если декорируемый объект не использует его?
я читал вот эту статью http://cpp-reference.ru/patterns/structural-patterns/decorator/

хочу реализовать чтото типа
Код: plaintext
1.
2.
3.
4.
Stream*  aStream = new CompressingStream(
                        new ASCII7Stream(
                          new FileStream( "fileName.dat" )));
aStream->putString( "Hello world" );



FileStream например будет системный java.io.FileInputStream

Как мне быть?
...
Рейтинг: 0 / 0
Декаратор
    #38126037
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) если никакой конструктор не указан то java автоматом создает конструктор по умолчанию без аргументов
2) Когда ты определяешь конструктор с параметрами java считает что ты знаешь что делаешь и автоматом ничего не генерирует
3) добавь дефолтный паблик конструктор
4) RTFM в конце концов
...
Рейтинг: 0 / 0
Декаратор
    #38126151
EDUARD_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,

балин xD тупанул конкретно. спасибо!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Декаратор
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]