Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java "的重要性;这"; 我在C++中使用COCOS2DX,当添加精灵或对象时,_Java_C++_This_Cocos2d X - Fatal编程技术网

Java "的重要性;这"; 我在C++中使用COCOS2DX,当添加精灵或对象时,

Java "的重要性;这"; 我在C++中使用COCOS2DX,当添加精灵或对象时,,java,c++,this,cocos2d-x,Java,C++,This,Cocos2d X,这个->addChild(某物)和addChild(某物) 工作。两种方法得出的结果相同 但不仅在c++中,this也用于android编程(也许所有编程语言都使用“this”?)。我在Java中使用它来替换ClassName.class,使用简单的this。但是除了这个目的之外,这个还有很多用途 但是因为我没有深入研究编程语言,我不知道它们是否真的做同样的工作(this->addChild与addChild和ClassName.class与this) 为什么我们需要这个 自我回答: 这是一

这个->
addChild(某物)
addChild(某物)

工作。两种方法得出的结果相同

但不仅在
c++
中,
this
也用于android编程(也许所有编程语言都使用“this”?)。我在Java中使用它来替换ClassName.class,使用简单的
this
。但是除了这个目的之外,
这个
还有很多用途

但是因为我没有深入研究编程语言,我不知道它们是否真的做同样的工作(this->
addChild
addChild
ClassName.class
this

为什么我们需要这个

自我回答:

这是一个关键字,在许多面向对象编程语言中,它指的是当前类实例或对象


所以…只是为了安慰?

这个
关键字(或者Python中类似的
self
)是一种“引用调用了执行方法的实例”的机制,尽管其含义可能会因语言和上下文而异。这-哈因此,当需要从给定方法中“传递当前实例”时,它非常方便

此外,一些语言要求在调用成员时手动指定
(或计算结果为实例的其他表达式);也就是说,必须始终指定
this
this.m()
。其他语言允许将
this.m()
m()
等效,其中
m
是与当前实例关联的成员函数

类似地,使用
Type.m()
通常表示调用在类型上定义的“静态方法”;同样,这是特定于语言的,一些语言支持第一类类型值,其中没有真正的“静态”方法

除了如何定义一种特定的语言之外,没有什么特别的押韵或理由,问题应该集中在特定语言中的特定语境1。对于一种语言的大多数原因,我可以用另一种“OOP”语言给出一个反例



1个例子:您引用的是
ClassName.class
,然而,在Java中,这只是获取相应
class
对象的特殊语法,与
this
或成员(静态或非静态)无关。

在实例方法或构造函数中,
是对当前对象的引用,即调用其方法或构造函数的对象。您可以使用
this
从实例方法或构造函数中引用当前对象的任何成员

在Java中的用法:

这里给出了
这个
关键字的6种用法

  • 关键字可用于引用当前类实例变量

  • this()
    可用于调用当前类构造函数

  • 关键字可用于调用当前类方法(隐式)

  • 可以在方法调用中作为参数传递

  • 可以在构造函数调用中作为参数传递

  • 关键字也可用于返回当前类实例

  • 让我们考虑一个问题:

    class student
    {  
        int id;  
        String name;  
    
        student(int id,String name)
        {  
            id = id;  
            name = name;  
        }  
        void display()
        {
            System.out.println(id+" "+name);
        }  
        public static void main(String args[])
        {  
            student s1 = new student(1,"NameA");  
            student s2 = new student(2,"NameB");  
            s1.display();  
            s2.display();  
        }  
    }  
    
    输出将是:

    0 null
    0 null
    
    1 NameA
    2 NameB
    
    问题的解决方案:

    class Student
    {  
        int id;  
        String name;  
        student(int id,String name)
        {  
            this.id = id;  
            this.name = name;  
        }  
        void display()
        {
            System.out.println(id+" "+name);
        }  
        public static void main(String args[])
        {  
            Student s1 = new Student(1,"NameA");  
            Student s2 = new Student(2,"NameB");  
            s1.display();  
            s2.display();  
        }  
    }  
    
    输出将是:

    0 null
    0 null
    
    1 NameA
    2 NameB
    

    < C++ >代码> > < /Cord>是一个关键字,它指向调用该方法的对象的指针。 严格地说,为了方便起见,在某些情况下,编译器可以找出在同一对象上调用另一个方法的位置。如果对象具有
    fooBar
    方法,则可以将其编写为
    this->fooBar(),或者为了方便起见,您可以只编写
    fooBar()this->fooBar()


    但是,在其他情况下,确实需要显式地使用
    this
    。如果您希望该方法返回实例本身,请考虑。您必须以某种方式引用实例本身,您可以使用
    返回这个。或者,如果您想调用另一个函数,比如说
    barMan
    ,传入实例本身-同样需要使用
    this
    barMan(this)

    有一些用途。首先,在某些情况下,您可能需要在当前方法中显式引用receiver对象,如果您将其作为参数传递给另一个函数。例如,考虑C++代码:

    void someOtherFunction(SomeClass* arg);
    
    void SomeClass::doSomething() {
        someOtherFunction(this);
    }
    
    这里,
    someOtherFunction
    是一个自由函数,它获取指向
    SomeClass
    对象的指针。在
    doSomething
    的上下文中调用它以使接收方对象成为参数的唯一方法是使用
    this

    <>代码> C++中的也用于赋值运算符,它需要返回对接收者对象的引用:

    MyClass& MyClass::operator= (MyClass rhs) {
        // Do something to the receiver object
        return *this;
    }
    
    这里,
    返回*this
    表示“返回对接收方对象的引用”,如果没有
    ,则无法表示该引用

    也用于在少数情况下消除歧义。例如:

    public class MyClass {
        private int value;
    
        public MyClass(int value) {
            this.value = value;
        }
    }
    
    这里,在
    MyClass
    构造函数中使用
    this
    是为了区分参数
    value
    和字段
    value
    。单独引用
    会选择参数,而使用
    则会选择此参数。值
    指的是字段


    希望这有帮助

    还可以考虑一种普通类型的构造函数或setter

    public ConstrcutMe (String name, int age)
    {
        this.name = name;
        this.age = age;
    }
    
    public void setName (String name) {
    {
       this.name = name;
    }
    

    我相信这充分说明了为什么我们需要
    this
    正如您正确指出的那样,
    this
    关键字用于引用给定类的当前实例

    看到<代码是很常见的