Читайте также:
|
|
После оператора 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();
}
}
Дата добавления: 2015-09-11; просмотров: 89 | Поможем написать вашу работу | Нарушение авторских прав |