Интерфейс и StringLog Путаница
Я читаю книгу "Объектно-ориентированные структуры данных с использованием Java", и я нахожусь в главе 2. Я решил опробовать одно из упражнений, которые у них там были, но мне кажется, что код не работает, хотя они пришли прямо из книги., Кто-нибудь может уточнить это?
package chapter2;
public interface StringLogInterface
{
void insert(String element);
boolean isFull();
int size();
boolean contains(String element);
void clear();
String getName();
String toString();
}
Этот проект использует три файла, остальные два я выкладываю ниже.
package chapter2;
public class ArrayStringLog
{
protected String name;
protected String[] log;
protected int lastIndex = -1;
public ArrayStringLog(String name, int maxSize)
{
log = new String[maxSize];
this.name = name;
}
public ArrayStringLog(String name)
{
log = new String[100];
this.name = name;
}
public void insert(String element)
{
lastIndex++;
log[lastIndex] = element;
}
public boolean isFull()
{
if (lastIndex == (log.length - 1))
return true;
else
return false;
}
public int size()
{
return (lastIndex + 1);
}
public boolean contains(String element)
{
int location = 0;
while (location <= lastIndex)
{
if (element.equalsIgnoreCase(log[location])) // if they match
return true;
else
location++;
}
return false;
}
public void clear()
{
for (int i = 0; i <= lastIndex; i++)
log[i] = null;
lastIndex = -1;
}
public String getName()
{
return name;
}
public String toString()
{
String logString = "Log: " + name + "\n\n";
for (int i = 0; i <= lastIndex; i++)
logString = logString + (i+1) + ". " + log[i] + "\n";
return logString;
}
}
Последняя часть:
package chapter2;
public class UseStringLog
{
public static void main(String[] args)
{
StringLogInterface sample;
sample = new ArrayStringLog("Example Use");
sample.insert("Elvis");
sample.insert("King Louis XII");
sample.insert("Captain Kirk");
System.out.println(sample);
System.out.println("The size of the log is " + sample.size());
System.out.println("Elvis is in the log: " + sample.contains("Elvis"));
System.out.println("Santa is in the log: " + sample.contains("Santa"));
}
}
Эта последняя часть меня и смутила. На линии,
sample = new ArrayStringLog("Example Use");
NetBeans говорит "несопоставимые типы, обязательно: StringLogInterface, найдено: ArrayStringLog.
Все они строятся успешно, но не должен ли последний файл с тремя операторами println в конце что-то напечатать?
1 ответ
Решение
Делать ArrayStringLog
воплощать в жизнь StringLogInterface
,
public class ArrayStringLog implements StringLogInterface {
// ...
}
Only then is this possible:
StringLogInterface sample;
sample = new ArrayStringLog("Example Use");