2015-04-22 1 views
0

У меня есть вопрос относительно 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

Некоторые языки не допускают использование метода без this, как питон (self.), но в большинстве случаев, это вопрос читаемости и безопасности.

Если вы определяете функцию из класса с тем же именем, что и метод класса, это может вызвать проблему.

Добавив this, вы знаете, что это метод из класса.

+0

спасибо, получил свою точку –

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 "". 
} 
}