[Путь к тому, чтобы стать королем Java] Часть 12: Java SE (объектно-ориентированное программирование — пакет)

содержание

Цели этого раздела

1. Что такое пакет

1. Импортируйте класс в пакет

2. Статический импорт

3. Поместите класс в пакет

4. Контроль доступа к пакетам

5. Общие системные пакеты


Цели этого раздела

Мешок

1. Что такое пакет

Пакет — это способ организации занятий.

Основная цель использования пакетов — обеспечить уникальность классов.

Например, вы написали в своем коде класс Test.Тогда ваши коллеги тоже могут написать класс Test.Если есть два класса с одинаковым именем, они будут конфликтовать и код не скомпилируется.

1. Импортируйте класс в пакет

 Java уже предоставляет множество готовых классов для использования.

①: Например, для печати массива:

public class TestDemo{
    public static void main(String[] args) {
        int[] array = {1,2,3,4,5};
        System.out.println(Arrays.toString(array));
    }
}

Для использования Arrays необходимо импортировать пакет, см. рисунок:

 Если верхняя строка кода не будет написана, будет сообщено об ошибке, см. рисунок:

Итак, как импортировать вышеуказанный пакет?Когда мы пишем код Arrays, IDEA автоматически выскочит из вариантов для выбора.Если вы выберете первый пункт и нажмете Enter, это поможет вам импортировать пакет. Посмотрите на картинку:

②: Другой пример:

Класс Date определяет дату и также написан библиотекой классов Java.

public class TestDemo {
    public static void main(String[] args) {
        java.util.Date date = new java.util.Date();//在我们不导包时候手写
        // 得到一个毫秒级别的时间戳
        System.out.println(date.getTime());
   }
}

Вы можете использовать java.util.Date, чтобы представить класс Date в пакете java.util.

Но этот способ написания более проблематичен.В настоящее время вы можете использовать описанный выше способ написания, вы можете использовать оператор импорта для импорта пакета

import java.util.Date;
public class TestDemo {
    public static void main(String[] args) {
        Date date = new Date();
        // 得到一个毫秒级别的时间戳
        System.out.println(date.getTime());
   }
}

Меры предосторожности:

Вы можете импортировать определенный класс, но не конкретный пакет

: импортировать пакет util и сообщить об ошибке

: Импорт определенного класса

③: Другой пример:

Если вам нужно использовать другие классы в java.util, вы можете использовать import java.util.*

import java.util.*;
public class TestDemo {
    public static void main(String[] args) {
        Date date = new Date();
        // 得到一个毫秒级别的时间戳
        System.out.println(date.getTime());
   }
}

: об ошибке не сообщается, это * можно понимать как подстановочный знак, что означает импорт всех классов в этом пакете.

Вопрос: Под util много классов, они все сразу импортируются? Нет, когда Java справится, это сделает тот, кому это нужно.

④: Но мы предпочитаем явно указывать имя импортируемого класса, иначе могут возникнуть конфликты.

Пример:

import java.util.*;
import java.sql.*;
public class TestDemo {
    public static void main(String[] args) {
        // util 和 sql 中都存在一个 Date 这样的类, 此时就会出现歧义, 编译出错
        Date date = new Date();
        System.out.println(date.getTime());
   }
}
// 编译出错
Error:(5, 9) java: 对Date的引用不明确
  java.sql 中的类 java.sql.Date 和 java.util 中的类 java.util.Date 都匹配

В этом случае необходимо использовать полное имя класса. 

Меры предосторожности:

Импорт сильно отличается от #include в C++. C++ должен использовать #include для импорта другого содержимого файла, но в Java это не требуется. import используется только для удобства при написании кода. import больше похож на пространство имен и использование в C++

Точка знаний

 Разница между импортом и пакетом

package: "пакет", относится к: пакету, в котором находится класс

 импорт: «ввести», относится к: импорту класса, необходимого в классе

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

2. Статический импорт

Используйте import static для импорта статических методов и полей в пакет.

① Пример:

import static java.lang.System.*;
public class Test {
    public static void main(String[] args) {
        out.println("hello");
   }
}

 Таким образом, System.out.println("hello");можно записать как out.println("hello");

② Другой пример:

import static java.lang.Math.*;
public class TestDemo {
    public static void main(String[] args) {
        double x = 30;
        double y = 40;
        // 静态导入的方式写起来更方便一些. 
        // double result = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
        double result = sqrt(pow(x, 2) + pow(y, 2));
        System.out.println(result);
   }
}

Математика в коде может быть удалена.

3. Поместите класс в пакет

основные правила:

Добавьте оператор пакета вверху файла, чтобы указать, в каком пакете находится код.

Имя пакета должно быть как можно более уникальным, обычно оно представляет собой обратную форму доменного имени компании (например, com.xuexiao.demo1 ). 

Имя пакета должно соответствовать пути кода.Например, для создания пакета com.xuexiao.demo1 будет соответствующий путь com/xuexiao/demo1 для хранения кода.

Если у класса нет инструкции пакета, класс помещается в пакет по умолчанию.

Шаги:

 1) Создайте новый пакет в IDEA: щелкните правой кнопкой мыши src -> New -> Package

2) Введите имя пакета во всплывающем диалоговом окне, например com.xuexiao.demo1, и нажмите Enter.

 3) Создайте класс в пакете, щелкните правой кнопкой мыши имя пакета -> Создать -> Класс, а затем введите имя класса

 4) На этом этапе вы можете видеть, что структура каталогов на нашем диске была автоматически создана IDEA.

5) При этом мы также видим, что вверху только что созданного файла Test.java появляется оператор пакета

  

4. Контроль доступа к пакетам

 Мы видели открытые и закрытые в классе Члены в приватных могут использоваться только внутри класса.

Если член не содержит ключевых слов public и private, то этот член может использоваться другими классами внутри пакета, но не может использоваться классами вне пакета.

Пример:

В приведенном ниже коде приведен пример: Demo1 и Demo2 находятся в одном пакете, Test — в другом.

 Демо1.java

package com.bili.demo;
public class Demo1 {
    int value = 0;
}

Демо2.java

package com.bili.demo; 
public class Demo2 { 
 public static void Main(String[] args) { 
 Demo1 demo = new Demo1(); 
 System.out.println(demo.value); 
 } 
} 
// 执行结果, 能够访问到 value 变量
10 

Тест.java

import com.bili.demo.Demo1; 
public class Test { 
 public static void main(String[] args) { 
 Demo1 demo = new Demo1(); 
 System.out.println(demo.value); 
 } 
} 
// 编译出错
Error:(6, 32) java: value在com.bili.demo.Demo1中不是公共的; 无法从外部程序包中对其进行访问

5. Общие системные пакеты

 1. java.lang: часто используемые базовые классы (String, Object) системы, этот пакет автоматически импортируется из JDK1.1.

2. java.lang.reflect: пакет программирования отражения Java;

3. java.net: Комплект для разработки сетевого программирования.

4. java.sql: пакет поддержки для разработки баз данных.

5. java.util: это пакет инструментов, предоставляемый java. (классы по сбору и т. д.) очень важно

6. java.io: комплект средств разработки для программирования ввода/вывода.

рекомендация

отblog.csdn.net/m0_64397675/article/details/123560470