当前位置:编程学习 > JAVA >>

菜鸟关于类的问题

原来一直是弄c++的,刚刚开始学java。

看源码的时候对类的构造有点疑问


public class BinaryTree<Node extends BinaryTree.BTNode<Node>> {

public static class BTNode<Node extends BTNode<Node>> {
public Node left;
public Node right;
public Node parent;
}

/**
 * Used to make a mini-factory
 */
protected Node sampleNode;

/**
 * The root of this tree
 */
protected Node r;

/**
 * This tree's "null" node
 */
protected Node nil;
....
....
}


这是我们教授给的源码,public class BinaryTree<Node extends BinaryTree.BTNode<Node>>不太懂,意思是Node是一个节点,在类的内部定义的。但如果我在另外一个文件定义了一个Node,然后在这里直接用效果不也是一样的吗?这里的Node的作用是相当于模版吗? 

--------------------编程问答-------------------- Node不止是一个节点,应该是一个实体类。这个类应该是你在外部定义的(当然也可以在内部定义)
你应该把这个当成一个实体类来看待。
protected Node sampleNode;           /**      * The root of this tree      */    protected Node r;       /**      * This tree's "null" node      */
protected Node nil;
这三句话的意思是在这个类内部构建三个Node类的对象 --------------------编程问答-------------------- 这是泛型。基础语法,网上找找资料吧。 --------------------编程问答--------------------


引用 2 楼 gukuitian 的回复:
这是泛型。基础语法,网上找找资料吧。


泛型我知道,但这样的一个类如何实例化呢。如果只是 public class BinaryTree<Node> {
....
}
这样的一个类我知道怎样去实例化 --------------------编程问答-------------------- 从最简单的学起 --------------------编程问答-------------------- <Node extends BinaryTree.BTNode<Node>>
这个定义了泛型上限,意思是你必须用BinaryTree.BTNode<Node>或其子类做参数。将你的Node类extends Binary.TBNode<Node>试试 --------------------编程问答--------------------
引用 5 楼 vicagogo 的回复:
<Node extends BinaryTree.BTNode<Node>>
这个定义了泛型上限,意思是你必须用BinaryTree.BTNode<Node>或其子类做参数。将你的Node类extends Binary.TBNode<Node>试试

这位兄弟解释正确,泛型的类型强制指定了
我是先学Java ,现在去学C++ 才发现Java比C++好理解多了,先学Java再去学C++ 发现C++特别扭 
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,