У меня есть несколько классов: book
и video
, оба из которых extend item
:Переменная nonvisibility в классах, которые проходят другой
class item {
int item_num;
String title;
}
class video extends item {
double length;
char rating;
}
class book extends item {
String author;
int year;
}
У меня есть текстовый файл значения, которые должны быть вставлены в список item
s. Текстовый файл выглядит следующим образом:
v 382 Armageddon 120 P
v 281 Scream 138 R
b 389 Othello Shakespeare 1603
v 101 Cellular 110 P
b 482 Hatchet Paulson 1987
И как файл читается:
list<item> theList;
item newItem;
while(true) {
if(file.isEOF) { break; }
if(file.getChar == 'v') {
newItem = new video();
/* the get___ methods below grab the next value
* in the file. Values tab delimited */
newItem.item_num = file.getInt();
newItem.title = file.getString();
newItem.length = file.getDouble();
newItem.rating = file.getChar();
} else if (file.getChar == 'b') {
newItem = new book();
newItem.item_num = file.getInt();
newItem.title = file.getString();
newItem.author = file.getString();
newItem.year = file.getInt();
}
theList.add(newItem);
}
Netbeans появляется сообщение об ошибке, что book
и video
переменные не в классе item
.
Почему нет переменных для переменных в классах, которые расширяют элемент? Как получить доступ к этим переменным?
Обычный пример, с которым я столкнулся с полиморфизмом, - это класс «животных», который «собака», «кошка» и т. Д. Расширяются. Эти экземпляры 'dog' и' cat' как 'animal var = new dog()'. То, что я делаю, ничем не отличается, нет? – gator
@gator: Вы пытаетесь получить доступ к свойствам дочернего объекта в своем родителе. Это похоже на попытку вызвать свойства 'String' на' Object'; просто потому, что 'video' ** - это **' item', это не означает, что 'item' ** is-a **' book'. – Makoto