|
|
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Вот в документации написано , что InputStream - абстрактный класс. А как тогда я могу пользоваться переменной System.in, которая имеет тип InputStream ? PS не судите строго...я только учу Яву ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 17:44:14 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
а в чем проблема? вы не можете создать экземпляр абстрактного класса, но вы можете создать экземпляр класса, расширяющего его, привести к типу абстрактного класса и работать с ним, что на примере InputStream и происходит. если посмотреть дебаггером, то там будет какой-нить другой класс, а не InputStream Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 17:47:57 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Deady но вы можете создать экземпляр класса, расширяющего его, привести к типу абстрактного класса и работать с ним, что на примере InputStream и происходит. ..и экземпляр после привидения к InputStream будет работать с методами InputStream, да ? И еще, как в eclipse посмотреть переменную в дебагере ? А то я что-то не пойму как...в окно Variables нельзя добавить переменные (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 17:57:05 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
> > ..и экземпляр после привидения к InputStream будет работать с > методами InputStream, да ? > он и без приведения будет с ними работать. он же его расширяет, что значит - наследует все, что определено в InputStream Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 17:59:47 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Т.е. System.in - это просто ссылка типа InputStream, а реально она указывает на какой-то подкласс класса InputStream ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 18:11:00 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
На Mon, 23 Jul 07 15:11:00 GMT "Primax" <nospam@sql.ru> записано: > Автор: Primax > Т.е. System.in - это просто ссылка типа InputStream, а реально она > указывает на какой-то подкласс класса InputStream ? Тема Ответить > Сообщение > в яве нет ссылок. но мыслите в правильном направлении Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 18:16:08 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Deady в яве нет ссылок. но мыслите в правильном направлении Posted via ActualForum NNTP Server 1.4 А как правильно называется то, что есть в Java? По сути переменные хранят ссылки на объекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 18:39:01 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
> > А как правильно называется то, что есть в Java? По сути переменные > хранят ссылки на объекты. Тема Ответить Сообщение > по сути может и хранят, но лучше думать что их нет, иначе получатся флеймообразные темы про immutable объекты и пр.. была одна такая год назад Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 18:50:23 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Deady в яве нет ссылок. но мыслите в правильном направлении Posted via ActualForum NNTP Server 1.4 а как тогда они называются ? Например : Object ob; что такое ob ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 00:51:48 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Обратимся к источнику Prentice Hall - Core Java 2 Volume I - Fundamentals 7th.chm There is an important difference between objects and object variables. For example, the statement Date deadline; // deadline doesn't refer to any object defines an object variable, deadline, that can refer to objects of type Date. It is important to realize that the variable deadline is not an object and, in fact, does not yet even refer to an object. You cannot use any Date methods on this variable at this time. The statement s = deadline.toString(); // not yet would cause a compile-time error. You must first initialize the deadline variable. You have two choices. Of course, you can initialize the variable with a newly constructed object: deadline = new Date(); Or you can set the variable to refer to an existing object: deadline = birthday; Now both variables refer to the same object. It is important to realize that an object variable doesn't actually contain an object. It only refers to an object. In Java, the value of any object variable is a reference to an object that is stored elsewhere. The return value of the new operator is also a reference. A statement such as Date deadline = new Date(); has two parts. The expression new Date() makes an object of type Date, and its value is a reference to that newly created object. That reference is then stored in the deadline variable. You can explicitly set an object variable to null to indicate that it currently refers to no object. deadline = null; . . . if (deadline != null) System.out.println(deadline); If you apply a method to a variable that holds null, then a runtime error occurs. birthday = null; String s = birthday.toString(); // runtime error! Variables are not automatically initialized to null. You must initialize them, either by calling new or by setting them to null. // Many people mistakenly believe that Java object variables behave like C++ references. But in C++ there are no null references, and references cannot be assigned. You should think of Java object variables as analogous to object pointers in C++. For example, Date birthday; // Java is really the same as Date* birthday; // C++ Once you make this association, everything falls into place. Of course, a Date* pointer isn't initialized until you initialize it with a call to new. The syntax is almost the same in C++ and Java. Date* birthday = new Date(); // C++ If you copy one variable to another, then both variables refer to the same date—they are pointers to the same object. The equivalent of the Java null reference is the C++ NULL pointer. All Java objects live on the heap. When an object contains another object variable, that variable still contains just a pointer to yet another heap object. In C++, pointers make you nervous because they are so error prone. It is easy to create bad pointers or to mess up memory management. In Java, these problems simply go away. If you use an uninitialized pointer, the runtime system will reliably generate a runtime error instead of producing random results. You don't worry about memory management, because the garbage collector takes care of it. C++ makes quite an effort, with its support for copy constructors and assignment operators, to allow the implementation of objects that copy themselves automatically. For example, a copy of a linked list is a new linked list with the same contents but with an independent set of links. This makes it possible to design classes with the same copy behavior as the built-in types. In Java, you must use the clone method to get a complete copy of an object. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 08:02:57 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Primax а как тогда они называются ? Например : Object ob; что такое ob ? Это неинициализированная объектная переменная. После Код: plaintext 1. Неиспорченным C++'ом можно называть их ссылками (потому что они всё-равно не знают, что такое ссылка). Но лучше не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 08:06:55 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Primax PS не судите строго...я только учу Яву ) Кстати, почему бы вам не почитать указанный мной источник? И только потом задавать свои вопросы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 08:07:43 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
> > а как тогда они называются ? Например : > > Object ob; > > что такое ob ? ob - это не более чем инструкция компилятору как компилировать. за яву точно не скажу, но например в перле ob - это элемент структуры, описывающей переменные с именем ob (в перле можно сделать несколько ob разных типов), содержащей ко всему тип этой ob. она собственно никуда не указывает и не ссылается. компилятор за вас сделает всю работу, и вы даже не сможете узнать физический адрес, по которому лежит значение переменной. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 10:12:03 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Хрюхрюшкин. Кстати, почему бы вам не почитать указанный мной источник? И только потом задавать свои вопросы? А сам-то прочитал? ;) А то вот судя по этому Хрюхрюшкин.ob станет указателем на объект. и не скажешь. Смотрим, черным по белому написано: In Java, the value of any object variable is a reference to an object that is stored elsewhere. И ни слова про указатели. Верней, нет. Слова-то есть, но сказаны они в адрес C++, чтобы облегчить понимание Jav'ы для тех, кто уже знает плюсы. Поэтому, оперировать термином "ссылка" можно и нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 10:23:56 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Точно. Ссылка, но не указатель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 10:39:34 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
joybell0 А сам-то прочитал? ;) Ну вашу мать. Специально привел, чтобы вы дочитали до конца. автор Many people mistakenly believe that Java object variables behave like C++ references. But in C++ there are no null references, and references cannot be assigned. You should think of Java object variables as analogous to object pointers in C++ . Это и есть указатели на объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 10:51:23 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Похоже, вы не испорчены C++, юные падаваны :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 10:51:50 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Если вы хотите двинуться в дебри этимологии, велкам. Давайте обсудим, что можно считать ссылкой, а что — указателем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 10:53:06 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Хрюхрюшкин.Обратимся к источнику Лучше к http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html] перво источнику . Там где то есть упоминание "object variable"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 12:13:40 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Timm Лучше к http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html] перво источнику . Там где то есть упоминание "object variable"? А меня тут не обвиняли в жонглировании "object variable". Кстати, тынц The reference values (often just references) are pointers to these objects, and a special null reference, which refers to no object. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 12:32:17 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Хрюхрюшкин. Кстати, тынц The reference values (often just references) are pointers to these objects, and a special null reference, which refers to no object. "Object reference" скрывает разделение между "reference variable" и "reference value". PS. отличная статья в тему. поржать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 13:27:38 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Timm "Object reference" скрывает разделение между "reference variable" и "reference value". PS. отличная статья в тему. поржать :) В Java есть лишь reference variable. Потому что reference value в ней нет по определению. Если не считать reference value как object pointer. Или я неправ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 13:31:41 |
|
||
|
Вопрос по InputStream
|
|||
|---|---|---|---|
|
#18+
Хрюхрюшкин. Timm "Object reference" скрывает разделение между "reference variable" и "reference value". PS. отличная статья в тему. поржать :) В Java есть лишь reference variable. Потому что reference value в ней нет по определению. Если не считать reference value как object pointer. Или я неправ? Так и есть. Спека эти понятия различает, книга - нет. There are two kinds of types in the Java programming language: primitive types (§4.2) and reference types (§4.3). There are, correspondingly, two kinds of data values that can be stored in variables, passed as arguments, returned by methods, and operated on: primitive values (§4.2) and reference values (§4.3). The reference values (often just references) are pointers to these objects, and a special null reference, which refers to no object. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 13:41:17 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34679186&tid=2145078]: |
0ms |
get settings: |
16ms |
get forum list: |
26ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
52ms |
get topic data: |
19ms |
get forum data: |
4ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 308ms |
| total: | 525ms |

| 0 / 0 |
