Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Ключевое слово this






 

Пусть есть два объекта одного типа a и b.

 

class Banana { void peel (int i) {}}

public class BananaTest {

public static void main (String [] args){

Banana a = new Banana (),

b = new Banana ();

a. peel (1);

b. peel (2);

}

}

 

Метод peel() для всех объектов класса Banana один.

Как метод peel() узнает, для кого он вызывается: a и b? А происходит следующее: передается скрытый аргумент – ссылка на объект, для которого вызван метод.

 

 

Ссылка на текущий объект называется this. (Мы говорим «Я», а не «Ваня»). this - это «Я».

 

public class Apricot {

void pick () {}

void pit () {pick (); } // можно записать this.pick ()-но не нужно.

}

 

 

Используется this:

1) при возврате ссылки на текущий объект: return this

 

public class Leaf {

int i = 0;

Leaf increment () {

i++;

return this;

}

void print () {

System.out.println (i+ “”); }

 

public static void main (String [] args) {

Leaf x = new Leaf ();

x.increment().increment().increment().print();

}

}

 

Напечатается 3

 

2) передача ссылки на текущий объект другому методу

 

class Peeler {

static Apple peel (Apple apple) {//почистили

return apple;

}

}

class Apple {

Apple getPeeled (){//чистим методом Peeler.peel ()

return Peeler.peel (this);

}

}

class Person {

public void eat (Apple apple) {

Apple peeled = apple.getPeeled ();

System.out.println (“Jummy”);

}

}

public class PassingThis {

public static void main (String[] args) {

new Person().eat(new Apple ());

}

}

 

 

3) Вызов конструктора из конструктора.

 

public class Flower {

int petalCount=0;

String s = “initial value”;

Flower (int petals) {

petalCount = petals;

}

Flower (String ss) {s=ss; }

Flower (String s, int petals) { /s – совпадение имен

this (petals); / должно быть первой операцией

this.s = s; / инициализировали поле s

}

Flower () {this (“hi”, 47); }

}

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.