Java 在与类和数据类型具有相同名称的方法中声明和初始化

Java 在与类和数据类型具有相同名称的方法中声明和初始化,java,class,variables,netbeans,Java,Class,Variables,Netbeans,我是面向对象编程的新手,我正试图声明和初始化left,但我不知道怎么做。我试过了 left = new Counter(4, left.mod); 但它是这么说的 不兼容的类型:int不能转换为Number 这不是真正的程序 public class Number{ private int mod; public Number(int modulus, Number left) { mod = modulus; //how to declare

我是面向对象编程的新手,我正试图声明和初始化left,但我不知道怎么做。我试过了

left = new Counter(4, left.mod);
但它是这么说的

不兼容的类型:int不能转换为Number

这不是真正的程序

public class Number{

    private int mod;
    public Number(int modulus, Number left) {
        mod = modulus;
        //how to declare left?
    }

似乎您正在尝试实现某种链表等。显然,您希望留下来被记住,所以请像类的任何其他常规属性一样声明它

public class Number{
    private Number left;
    private int mod;
    public Number(int modulus, Number left) {
        mod = modulus;
        this.left = left;
    }
}
如果您确实需要与一个类中具有相同名称的两个类进行交互,则必须使用完全限定名称来引用其中一个。因此,例如,如果您想在自己的
Number
类中引用
java.lang.Number
,您应该这样做

public class Number{
    private java.lang.Number left;
    private int mod;

    public Number(int modulus, java.lang.Number left) {
        mod = modulus;
        this.left = left;
    }
}

(请注意,我的重点实际上是指出,正如您可能已经猜到的那样,给一个类起一个与常用库类型相同的名称通常会带来更多的麻烦)

这是什么,左边?我总是看到这个。我想知道这是什么…?因为这里还剩下两个,一个是传入的参数,一个是属性,我们需要一种方法来区分它们。这意味着这个实例/我自己-因此this.left是这个实例的left属性。