Javanese Online

Файлы, пакеты и импорты, package-private доступ.

Файлы и пакеты

Код на Java пишется в файлах. Так как кода может быть очень много, файлы объединяются в пакеты, а пакеты представляются каталогами (папками). Это также позволяет классам с одинаковыми именами не конфликтовать (в Java есть два класса Date!).

Например, использование класса java.util.Date (код которого находится в файле java/util/Date.java относительно места, где хранятся классы) может выглядеть так:

package online.javanese.basics.oop.packages;


public class NoImportExample {

    public static void main(String[] args) {
        System.out.println("сегодня " + new java.util.Date());
    }

}

Во избежание случаев, когда разные авторы придумывают одинаковые имена пакетов, имя пакета предваряется частями доменного имени личного или корпоративного сайта в обратном порядке (javanese.online -> online.javanese).

сайт javanese.online
Курс «Основы Java-программирования»
Глава «Объектно-ориентированное программирование на Java»
Урок про пакеты

пакет online.javanese.basics.oop.packages
расположение online/javanese/basics/oop/packages

Импорты

Для того чтобы иметь возможность опустить имя пакета, используют импорты:

package online.javanese.basics.oop.packages;

import java.util.Date;


public class ImportExample {

    public static void main(String[] args) {
        System.out.println("сегодня " + new Date());
    }

}

Это даёт возможность использовать имя класса без указания пакета.

В любой Java-файл неявно импортирован весь пакет java.lang, как если бы в импортах была строка import java.lang.*;. В этом пакете находятся, в частности, классы Object, String и многие другие.

Модификаторы доступа классов

Если класс публичный (ключевое слово public), он должен быть объявлен в одноимённом файле. Как, например, java.util.Date объявлен в файле Date.java.

Если модификатор доступа не указан, то класс доступен в пределах пакета (package-private) и может находиться в файле с любым именем.

package online.javanese.basics.oop.packages;

// файл Nexus5.java

// класс доступен отовсюду
public class Nexus5 {

    private Gsm1900Module gsmModule = new Gsm1900Module();

    public void dial(String number) {
        gsmModule.dial(number);
    }

}

// класс доступен только в пределах
// пакета online.javanese.basics.oop.packages
class Gsm1900Module {

    void dial(String number) {
        // dial
    }

}
Комментарии к уроку

Сообщить об ошибке

Javanese.Online в GitHub

Чаты и каналы в Telegram

RSS-лента