链表继承java 公共类链接{ 公共静态链接最后一个=新链接(-1); 公共链接下一步; 公共int-myId; 公共链接(){ 这(10); } 公共链接(链接下一个){ 这(20); this.next=next; } 受保护链接(布尔b){ 这(99); } 专用链接(int myId){ this.myId=myId; } @凌驾 公共字符串toString(){ 返回“Link#”+myId; } } 公共类数据链扩展了数据链{ 私人T值; 公共数据链(T值){ 此(值,新链接(false)); } 公共数据链路(T值,链路父级){ 超级(家长); 这个值=值; } @凌驾 公共字符串toString(){ 返回super.toString()+”(“+value.toString()+”); } } 公共班机{ 公共静态void main(字符串[]args){ ************************ } }
通过将线路**********************替换为 System.out.println(新数据链(new Link()).next)强>链表继承java 公共类链接{ 公共静态链接最后一个=新链接(-1); 公共链接下一步; 公共int-myId; 公共链接(){ 这(10); } 公共链接(链接下一个){ 这(20); this.next=next; } 受保护链接(布尔b){ 这(99); } 专用链接(int myId){ this.myId=myId; } @凌驾 公共字符串toString(){ 返回“Link#”+myId; } } 公共类数据链扩展了数据链{ 私人T值; 公共数据链(T值){ 此(值,新链接(false)); } 公共数据链路(T值,链路父级){ 超级(家长); 这个值=值; } @凌驾 公共字符串toString(){ 返回super.toString()+”(“+value.toString()+”); } } 公共班机{ 公共静态void main(字符串[]args){ ************************ } },java,inheritance,linked-list,Java,Inheritance,Linked List,通过将线路**********************替换为 System.out.println(新数据链(new Link()).next) 它打印链接#99,如何到达受保护链接(布尔b) 您可以使用任何JAVA IDE来跟踪这些步骤 public class Link { public static Link LAST = new Link(-1); public Link next; public int myId; public
它打印链接#99,如何到达受保护链接(布尔b) 您可以使用任何JAVA IDE来跟踪这些步骤
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) {
************************
}
}
new DataLink<>(new Link()).next
newdatalink(newlink())。下一步
正在获取数据链接父类(链接)的下一个链接对象,因为数据链接类没有下一个对象
这就是步骤
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) {
************************
}
}
new DataLink<>(new Link()).next
1.new数据链(new Link())
2.此(值,新链接(假));
3.protected Link(布尔b){//来自新链接(false)
这(99);
4.this.myId=myId;//myId=99,来自此(99)
5.超级(父);//调用公共链接(下一个链接)
6.this.next=next;//next=link对象,myId=99
因此,当您调用新数据链接(new Link())时.next,。next将调用父类中的next对象,该对象将打印Link#99,,,。我不理解您的困惑。如果
DataLink
和Link
在同一个包中,DataLink
将有权访问Link
中受保护的成员。您的结果有道理。你调用新链接(false)
,这会触发布尔构造函数。它假设构造函数到达公共链接(下一个链接)
,而不是受保护的链接(布尔b)
,不是吗?但是系统.out.println(新数据链接(新链接()).next);
意味着(新数据链接(新链接())
调用数据链(T值)
,因为新链接
返回一个值,但也有。下一步不是null
?数据链(T)
被调用,它调用数据链(T,Link)
通过这个(值,新链接(false))
数据链(T,Link)
传递新链接(false)
通过super(parent)
将ID99
toLink(Link)
存储在next
中。为什么next是myId=99的对象?它不是之前的对象吗?this.myId?parent对象的myId=99。super(parent)调用public Link(Link next)并指定next是parentWhypublic DataLink(T值,链接父项)
被调用?没有2个参数。它来自此(值,新链接(false))