我有一个关于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)
}
答案 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 "".
}
}