2013-02-14 2 views
1

У меня есть класс, который проходит mysocket сокетов класса ..построение подклассов, используя экземпляр суперкласса

class MySocket extends Socket { 
    public int id; 
} 

теперь у меня есть экземпляр подкласса (Socket), который я получил от принимает метод ServerSocket. Как использовать этот экземпляр Socket для создания экземпляра MySockey?

+0

Java! = C++. Классы не заканчиваются в двоеточие. –

+0

Я не уверен, что вы имеете в виду. Вы действительно хотите подкласс «Socket»? –

+3

Почему вы хотите расширить класс Socket? Подумайте об этом. Прочтите это: http://www.artima.com/designtechniques/compoinh.html –

ответ

1

Вы получаете Socket где-то, так что вы бы лучше использовать обертку, чтобы добавить id к нему, что-то вроде:

public class SocketWrapper { 
    private Socket socket; 
    private int id; 
    // getter, setter, ctors, ... 
} 
0

Я согласен с рекомендацией, чтобы обернуть, а не расширять гнезда. Однако, если вы решите остаться с расширением, добавьте конструктор в ваш подкласс, который принимает аргумент Socket. Делегируйте методы Socket.

0

Подкласс класса имеет смысл только тогда, когда вы хотите добавить дополнительные функции к самому классу. В вашем случае кажется, что вы хотите просто использовать Sockets. Так что подход, предложенный @RC, прав. Вместо подкласса класса Socket вы можете иметь объект Socket в качестве члена экземпляра, и вы можете присвоить ему тип server.accept().

Надеюсь, это поможет.

+0

Я знаю, что вы говорите правильно. Но мне нужно знать, как это сделать в подклассовке. – suresh

+0

@suresh: поскольку вы расширяете класс Socket, вы можете иметь конструктор в своем классе, который будет принимать некоторые аргументы, а затем из этого конструктора вы можете позвонить к супер, передав некоторые требуемые/не требуемые аргументы. – ankurtr

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