1
2
3
4
5
|
{
int x;
//видна
}
//не видна
|
Как вы помните нельзя создавать переменные с таким же именем, как те которые находятся в области видимости:
1
2
3
4
|
int x;
{
int x;//ошибка
}
|
Например нельзя в методе создать переменную с именем, совпадающем с названием параметра:
1
2
3
|
public void test(int t) {
PackageTest t = new PackageTest();//ошибка
}
|
Конфликт имен возникает в программе, когда импортируется два пакета, которые содержат классы с одинаковым именем. Java разрешает эту проблему следующим образом: класс, который был импортирован первым получает возможность быть созданным без точки, а второй класс может быть вызван только с использованием его полного имени. Например, если импортировать в какой — то класс пакеты ru и ru.cybern, то в зависимости от порядка, мы сможем обратиться к тому или иному классу Test.
1
2
3
4
5
6
7
8
9
|
import ru.Test;
import ru.cybern.*;
public class test {
public static void main(String[] args) {
Test test1 = new Test();//ru.Test
ru.cybern.Test test2 = new ru.cybern.Test();
}
}
|
Если конфликт имен переменных произошел между параметрами метода и полями класса, то для его разрешения используют ключевое слово this:
1
2
3
4
5
6
|
public class TestClass {
int key;
public void setKey(int key){
this.key = key;
}
}
|
На этом мы заканчиваем рассмотрение пакетов и областей видимости.