Сегодня я начал работу над небольшим Java-приложением. У меня есть некоторый опыт работы с PHP OOP, и в основном принцип один и тот же. Хотя я думал, что он должен применяться в обоих направлениях.
Но, например, ключевое слово используется по-разному, как я понимаю. В Java
class Params { public int x; public int y; public Params( int x, int y ) { this.x = x; this.y = y; } public void display() { System.out.println( "x = " + x ); System.out.println( "y = " + y ); } } public class Main { public static void main( String[] args ) { Params param = new Params( 4, 5 ); param.display(); } }
В то же время в PHP необходимо сделать то же самое
<?php class Params { public $x; public $y; public function __construct( $x, $y ) { $this->x = $x; $this->y = $y; } public void display() { echo "x = " . $this->x . "\n"; echo "y = " . $this->y . "\n"; } } class Main { public function __construct() { $param = new Params( 4, 5 ); $param->display(); } } $main = new Main(); ?>
Я просто хотел бы спросить, есть ли другие отличия в this
ключевом слове?
Поскольку я вижу, что в Java он используется для возврата экземпляра модифицированного объекта, и если я передаю аргумент с тем же именем, что и атрибут в классе. Затем, чтобы назначить значение, мне нужно четко показать, что такое аргумент и что такое атрибут класса. Например, как показано выше: this.x = x;
В Java вам не всегда нужно говорить «это», Java это выяснит. Единственная ситуация, когда вам нужно это сказать, – это когда локальная переменная имеет то же имя, что и переменная экземпляра, и в этом случае Java будет использовать локальную переменную, если вы не скажете this.var
Но вы все еще можете сказать this.var, даже если это не нужно на Java, если это поможет вам лучше понять код.
Да, «это» ключевое слово в php работает так же, как и в java, и нет другой разницы
Java и PHP отличаются тем, как они обрабатывают это ключевое слово.
Прочитайте этот вопрос и ответ , и это объясняет некоторое нечетное поведение этого ключевого слова в PHP.