为什么在访问私有方法时使用它?

时间:2015-04-22 09:31:50

标签: oop methods this private private-methods

我有一个关于oop的问题。这似乎真的微不足道。我在网上看过他们使用this访问私有方法的示例。真的有必要吗?它是语言特定的吗?

以下是可以使用this完成的示例。

class A {
    def test(): String = {
        val x = this.test_2()
        x
    }

    private def test_2(): String = {
        "This is working"
    }
}

object Main extends App {
        val a = new A
        val x = a.test
        println(x)
    }

这里没有this的相同代码。两者都在发挥作用。

class A {
    def test(): String = {
        val x = test_2()
        x
    }

    private def test_2(): String = {
        "This is working"
    }
}

object Main extends App {
        val a = new A
        val x = a.test
        println(x)
    }

2 个答案:

答案 0 :(得分:2)

有些语言不接受使用不带if (xmlhttp.readyState==4 && xmlhttp.status==200) { var tableHtml = "<table>"; var lines = xmlhttp.responseText.split("\n"); for (var i=0; i < lines.length; i++) { tableHtml += "<tr>"; var line = lines[i].split(";"); tableHtml += "<td>" + line[0] + "</td><td>" + line[1] + "</td>"; tableHtml += "</tr>"; } tableHtml += "</table>"; document.getElementById("stock-table").innerHTML = tableHtml; } 的方法,例如python(this),但在大多数情况下,它是可读性和安全性的问题。

如果您使用与类的方法同名的类定义一个函数,则可能会导致问题。

通过添加self.,您知道它是该类的一种方法。

答案 1 :(得分:1)

“this”关键字指的是您当前正在其中编写代码的类。它主要用于区分方法参数和类字段。

例如,假设您有以下类:

public class Student
{
string name = ""; //Field "name" in class Student

//Constructor of the Student class, takes the name of the Student
//as argument
public Student(string name)
{
   //Assign the value of the constructor argument "name" to the field "name"
   this.name = name; 
   //If you'd miss out the "this" here (name = name;) you would just assign the
   //constructor argument to itself and the field "name" of the
   //Person class would keep its value "".
}
}