Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Вопрос по наследованию


Автор: ulcigor 8.11.2014, 17:50
Добрый вечер уважаемые форумчане.
Возник вопрос по наследованию.

Имеется интерфейс и две имплементации этого интерфейса. Допустим классы A и B. При инициализации класса A и класса B, необходимо присвоить классу A класс B. Вопрос собственно в том, как это сделать? При попытке такое провернуть вполне ожидаемо, что java выкидывает Exeption java.lang.ClassCastException с описанием cannot be cast to

Вот примерв кода:

Код

public interface Session {
    public String getName();
    public void setName(String name);
}


Код

public class Websocket implements Session {
    private String name;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}


Код

public class CWebsocket implements Session {
    private Integer id;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
}


Код

public class Test {
    public static void main(String [] args) {
        Websocket websocket =  new Websocket();
        websocket.setName("test");

        CWebsocket cWebsocket = (CWebsocket) websocket;
        System.out.println(cWebsocket.getName());
    }
}


Заранее большое спасибо за внимание к проблеме.

Автор: sgrey 9.11.2014, 04:28
напишите зачем вам это надо и что хотите чтобы получилось, получите ответ как это сделать правильно. 

Автор: Mirkes 11.11.2014, 14:34
Интересно, как это пропустил компилятор: класс CWebsocket НЕ ИМПЛЕМЕНТИРУЕТ Session - нет реализации методов getName и  setName.

Автор: baldina 11.11.2014, 17:18
Цитата(ulcigor @  8.11.2014,  17:50 Найти цитируемый пост)
Имеется интерфейс и две имплементации этого интерфейса. Допустим классы A и B. При инициализации класса A и класса B, необходимо присвоить классу A класс B. 

Имеется интерфейс "животное" и две имплементации этого интерфейса. Допустим классы "кошка" и "собака". При инициализации класса "кошка" и класса "собака", необходимо присвоить классу "кошка" класс "собака". 

ничего не замечаете?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)