Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие Java.doc
Скачиваний:
17
Добавлен:
07.09.2019
Размер:
569.34 Кб
Скачать

Оператор import

После оператора package, но до любого определения классов в исходном Java-файле, может присутствовать список операторов import. Этот оператор переводит классы и целые пакеты в область прямой видимости. Общая форма оператора import такова:

import пакет1 [.пакет2].(имякласса|*);

где пакет1 - имя пакета верхнего уровня, пакет2 - это необязательное имя пакета, вложенного в первый пакет и отделенное точкой. И, наконец, после указания пути в иерархии пакетов, указывается либо имя класса, либо метасимвол звездочка. Звездочка означает, что, если Java-транслятору потребуется какой-либо класс, для которого пакет не указан явно, он должен просмотреть все содержимое пакета со звездочкой вместо имени класса. В приведенном ниже фрагменте кода показаны обе формы использования оператора import :

import java.util.Timer;

import java.util.*;

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

Необходимо отметить так же, что применение без нужды формы записи оператора import с использованием звездочки может значительно увеличить время трансляции кода (хотя на скорость работы и размер программы это не влияет).

Ниже приведен пример реализации программы содержащей два пакета. Первый пакет p1 содержащийся в файле p1.jsl, приведен ниже. В нем содержится один класс А.

package p1;

public class A // класс А

{ int a;

private int b;

A() {} // конструктор без параметров

public A(int aa, int bb) // конструктор c 2 параметрами

{ a = aa;

b = bb;

}

public void fun_A()

{ System.out.println("class A (a,b) " + a + ' ' + b);

}

}

Второй пакет p2 включает два класса В (суперкласс) и С (подкласс). Этот пакет помещен в файл p2.jsl. Его содержимое приводится ниже.

package p2;

public class B // суперкласс В

{ protected int a, b;

B() {} // конструктор без параметров

public B(int aa, int bb) // конструктор c 3 параметрами

{ a = aa;

b = bb;

}

public void fun_B()

{ System.out.println("superclass B (a,b) " + a + ' ' + b);

}

}

public class C extends B // подкласс C

{ private int c;

C() {} // конструктор без параметров

public C(int aa, int bb, int cc) // конструктор c параметрои

{ super(aa,bb);

c = cc;

}

public void fun_C()

{ System.out.println("subclass C (c) " + c);

}

}

Классы описанные в указанных пакетах используются в main-функции класса start, содержащегося в файле p3.jsl.

import p1.A;

import p2.*;

class start

{ public static void main(String[] args)

{ A ob1 = new A(1,2);

ob1.fun_A();

B ob2 = new B(3,4);

ob2.fun_B();

C ob3 = new C(5,6,7);

ob3.fun_B();

ob3.fun_C();

}

}