Ява — Что означает квалификация?

Читая статьи, руководства и т. Д. О программировании, я всегда сталкиваюсь со словом qualified, Как и в Java, полное имя класса будет com.example.Class. чтение
этот статья, определяет оператор разрешения области :: в C ++ используется для определения скрытых имен, так что вы все равно можете их использовать. Есть ли определение для этого? Потому что он, кажется, каждый раз используется в другом контексте.

7

Решение

В компьютерном программировании полное имя — это однозначное имя
который указывает на какой объект, функцию или переменную ссылается вызов
без учета контекста вызова. В
иерархическая структура, имя полностью уточняется, когда оно «завершено
в том смысле, что он включает в себя (а) все имена в иерархической последовательности
над данным элементом и (б) имя данного элемента
сам по себе. «Таким образом, полностью определенные имена явно относятся к пространствам имен
иначе это было бы неявно из-за объема вызова.
Хотя это всегда делается для устранения двусмысленности, это может означать
вещи зависят от контекста.

Источник Википедия

Короче говоря, это значит, что

Вы можете иметь класс с именем Math в вашем проекте, но Math уже присутствует в Java.

Поэтому, чтобы однозначно определить, к какому классу вы на самом деле обращаетесь, нужно указать имя с пакетом:

java.lang.Math //refers to java class Math
org.myproject.Math //refers to your project Math class
11

Другие решения

От Мерриам Вебстер

Полное определение качества

переходный глагол
1
a: уменьшить от общей до конкретной или ограниченной формы: изменить
б: сделать менее резким или строгим: умеренный
в: чтобы изменить силу или вкус
d: ограничить или изменить значение (как существительное)
2
: охарактеризовать путем присвоения имени атрибуту: описать
3
a: соответствовать тренировке, навыку или способности для специального назначения
b (1): объявить компетентным или адекватным: сертифицировать (2): инвестировать с правоспособностью: лицензия

Пункты 1 и 2 применяются. У Java и C ++ есть области видимости / пространства имен, и «квалифицировать» означает ввести достаточные области видимости, чтобы различать потенциальных кандидатов.

C.f .: Если у вас есть два класса с членом под названием «чтение».

class Foo {
void read();
};

class Bar {
void read();
};

В вашем файле реализации вы будете реализовывать обе функции. Но если вы написали (C ++)

void read() {}

Это допустимо, но оно создает функцию в глобальном пространстве имен, а не реализует одну из двух функций. Тот же код, написанный внутри определения класса Foo, будет реализовывать Foo :: read.

Таким образом, чтобы реализовать наши функции-члены вне определений классов, мы должны уточнить — чтобы сократить от общего, чтобы назвать атрибут пути контейнера — который читаем мы реализуем.

void Foo::read() {}
void Bar::read() {}

Глобальное пространство имен — «::», поэтому вы можете даже быть явным, если вы пытаетесь использовать это:

void ::read() {}  // note: this name is already taken by stdio's read() :)
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector