public class Link {
public static Link LAST = new Link(-1);
public Link next;
public int myId;
public Link() {
this(10);
}
public Link(Link next) {
this(20);
this.next = next;
}
protected Link(boolean b) {
this(99);
}
private Link(int myId) {
this.myId = myId;
}
@Override
public String toString() {
return "Link #" + myId;
}
}
public class DataLink<T> extends Link {
private T value;
public DataLink(T value) {
this(value, new Link(false));
}
public DataLink(T value, Link parent) {
super(parent);
this.value = value;
}
@Override
public String toString() {
return super.toString() + " (" + value.toString() +")";
}
}
public class Main {
public static void main(String[] args) {
************************
}
}
Заменяя линию ************************ ссвязанный список наследования Java
System.out.println (новый DataLink <> (новый Link()) далее);
печатает Ссылка # 99, Как это достичь защищенного Link (Boolean б)?
Я не понимаю твое замешательство. Если 'DataLink' и' Link' находятся в одном пакете, DataLink будет иметь доступ к защищенным членам в 'Link'. Ваш результат имеет смысл. Вы вызываете 'new Link (false)', который запускает логический конструктор. –
, предположим, что для достижения 'public Link (Link next)', а не 'protected Link (boolean b)', конструктором, не так ли? – student
Но 'System.out.println (новый DataLink <> (новая ссылка()) next); 'означает' (новый DataLink <> (новый Link()) 'вызывает' DataLink (значение T) ', так как' new Link' возвращает значение, но есть также '.next', а не' null'? – student