кодесурса

Пакеты Java

script1adsense2code
script1adsense3code

Вступление

Приличный размер проекта может иметь сотни классов Java, и вам нужно организовать их в пакеты (например, каталоги файлов). Это позволит вам классифицировать файлы, контролировать доступ к вашим классам и избежать потенциальных конфликтов имен. Иногда вы будете использовать сторонние библиотеки классов Java, написанные в другом отделе или даже за пределами вашей компании. Чтобы свести к минимуму вероятность того, что имена пакетов будут одинаковыми, обычно используют так называемые соглашения об обратном доменном имени. Например, если вы работаете в компании с именем SCT, у которой есть веб-сайт sct.com, вы можете поставить префикс всех имен пакетов с com.sct. Чтобы поместить класс Java в определенный пакет, добавьте оператор пакета в начале класса (это должен быть первый оператор без комментариев в классе). Например, если класс SalesTax был разработан для бухгалтерии, Вы можете объявить это следующим образом, что приведет к созданию структуры каталогов, как показано ниже:

«каталог
packagecom.sct.account;
classSalesTax {
// the class body goes here
}

Классы Java также организованы в пакеты, и полное имя класса состоит из имени пакета, за которым следует имя класса. Например, полное имя Java-класса Double isjava.lang.Double, где java.lang - это имя пакета.

Чтобы использовать открытый элемент пакета вне его пакета, необходимо выполнить одно из следующих действий:

  • Обращайтесь к члену по его полному имени: здесь нет необходимости в операторе импорта, но код станет нечитаемым из-за более длинного оператора.
 newpackageName.className (). methodName (аргумент1, аргумент2); 
  • Импортировать элемент пакета. Таким образом, мы можем импортировать один класс из одного пакета. Оператор импорта должен быть помещен после оператора декларации пакета.
 importpackageName.className; newclassName (). methodName (аргумент 1, аргумент2); 
  • Импортировать весь пакет участника: это поможет импортировать все классы определенного пакета.
 importpackageName *.
newclassName (). methodName (аргумент1, аргумент2);

Мы можем поместить наш файл класса в «classpath», чтобы иметь глобальный доступ без необходимости импорта, но это не рекомендуемый способ программирования. Ранее мы обсуждали, как создать / обновить «classpath». Мы можем добавить наш скомпилированный Java-каталог в classpath, как показано ниже,

 [PackageDir] packageNameClassName.java 

Предположим, что нашему классу SalesTax необходимо использовать метод calcInterest () класса «MyCalculation», объявленный в пакете «com.sct.calculate».

package com.sct.calculate;
public class MyCalculation 
 {
	//This method calculate interst
	public int calculateInterest(int amount, int rate)
	 {
 	  int intrerstAmount = amount * rate/100;
      return intrerstAmount;
     }
 }
 

Мы можем вызвать метод executeInterest () двумя способами.

1. Вызов с полным именем: как показано ниже, мы вызываем метод с полным путем.

«каталог

2. импорт пакета и затем прямой вызов метода: здесь мы добавили строку 3, которая является оператором импорта, и строка 11 будет работать точно так же, как строка 8.

package com.sct.account;
import com.sct.calculate.*;
public class SalesTax {
		public static void main (String args[]){
			int interestAmount = new com.sct.calculate.MyCalculation().calculateInterest(1000, 8);
			System.out.println("Interest Amount ="+ interestAmount);
			int intAmount2 = new MyCalculation().calculateInterest(1000,8);
			System.out.println("Interest Amount2="+ intAmount2);
		}
} 
 

Выход вышеупомянутого класса SalesTax будет как ниже

Пример вывода:

«каталог

Если вам нужно импортировать несколько классов из одного пакета, используйте подстановочный знак в операторе импорта, а не перечисляйте каждый из классов в отдельной строке, как показано ниже,


package com.sct.account;
import com.sct.calculate.*;
public class SalesTax 
{
		public static void main (String args[])
          {
			int interestAmount = new com.sct.calculate.MyCalculation().calculateInterest(1000, 8);
			System.out.println("Interest Amount ="+ interestAmount);
			int intAmount2 = new MyCalculation().calculateInterest(1000,8);
			System.out.println("Interest Amount2="+ intAmount2);
          }
}	
	  

Пакет в основном используется для реализации принципа инкапсуляции Java OOP. Давайте возьмем пример. У нас есть требование, чтобы у нас был один метод executeSPLInterest (), доступный только в том же пакете, т.е. «Com.sct.calculate». Это может быть для расчета процентов сотрудников банка. Так что наш класс «MyCalculation» будет выглядеть ниже

package com.sct.calculate;
public class MyCalculation {
	//This method calculate interst
	public int calculateInterest(int amount, int rate){
	int intrerstAmount = amount * rate/100;
		return intrerstAmount;
	}
	//This is Special Interst Calculation 
	protected int calculateSPLInterest (int amount, int rate){
		int intrerstAmount = (amount * rate/100) + 100;
		return intrerstAmount;
	}
}

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


Здесь программы небольшие и используют ограниченное количество классов, вы можете обнаружить, что вам вообще не нужно изучать пакеты. Но когда вы начнете создавать более сложные проекты с множеством классов, связанных друг с другом наследованием, вы можете обнаружить преимущества организации их в пакеты.

Пакеты полезны по нескольким широким причинам:

  • Они позволяют вам организовать ваши классы в единицы. Так же как у вас есть папки или каталоги на жестком диске для организации ваших файлов и приложений, пакеты позволяют вам организовать ваши классы в группы, чтобы вы использовали только то, что вам нужно для каждой программы.
  • Они уменьшают проблемы с конфликтами по поводу имен. По мере роста числа классов Java возрастает вероятность того, что вы будете использовать то же имя класса, что и у другого разработчика, что открывает возможность именования коллизий и сообщений об ошибках, если вы попытаетесь объединить группы классов в одну программу. Пакеты предоставляют способ ссылаться конкретно на желаемый класс, даже если он разделяет имя с классом в другом пакете.
  • Они позволяют вам защищать классы, переменные и методы более широкими способами, чем в каждом отдельном классе, как вы узнали сегодня. Вы узнаете больше о защите с пакетами позже.
  • Пакеты могут быть использованы для уникальной идентификации вашей работы.

Резюме

  • Пакет Java является способом организации классов в большом проекте, а также помогает в реализации инкапсуляции.
  • Чтобы получить доступ к коду, находящемуся вне текущего пакета, либо импортируйте класс, либо используйте полное имя класса.

Предыдущая: Класс, методы, переменные экземпляра
Далее: Концепции Java объектно-ориентированного программирования

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code