链表继承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 公共类链接{ 公共静态链接最后一个=新链接(-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

通过将线路**********************替换为

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 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)
将ID
99
to
Link(Link)
存储在
next
中。为什么next是myId=99的对象?它不是之前的对象吗?this.myId?parent对象的myId=99。super(parent)调用public Link(Link next)并指定next是parentWhy
public DataLink(T值,链接父项)
被调用?没有2个参数。它来自此(值,新链接(false))