Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
41
Добавлен:
12.05.2015
Размер:
624.64 Кб
Скачать

Простой класс

Начнем простым примером. Предположим, имеется класс с именем Box, который определяет три переменных экземпляра: width, height и depth. Пока что класс Box не содержит никаких методов.

class Box {

double width;

double height;

double depth;

}

Как было сказано выше, класс определяет новый тип данных. В этом случае – Box. Это имя в дальнейшем используется для объ­явления объектов типа Box. Важно помнить, что объявление класса создает только шаблон, а не фактический объект. Таким образом, предшествующий код не приводит к появлению каких-либо объектов типа Box. Чтобы факти­чески создать Box-объект, можно воспользоваться следующим утверждением:

Box mybox = new Вох(); // создать Box-объект с именем mybox.

После выполнения этого утверждения переменная mybox станет экземпляром класса Box, Всякий раз, когда создается экземпляр класса, образуется объект, который содержит свою собственную копию каждой экземплярной переменной, оп­ределенной в классе. Таким образом, каждый Box -объект будет содержать свою собственную копию переменных width, height и depth. Для доступа к этим переменным необходимо использовать операцию "точка" (.) Она свя­зывает имя объекта с именем переменной экземпляра. Например, чтобы на­значить переменной width объекта mybox значение 100, нужно использовать следующий оператор:

mybox. width = 100;

Этот оператор просит компилятор назначать копии переменной width, ко­торая содержится в объекте mybox, значение 100. В общем случае, чтобы об­ращаться как к переменным экземпляра, так и к методам объекта, следует указывать операцию "точка". Далее приводится законченная программа, которая использует Box-класс.

/* Программа, которая использует Box-класс.

Назовите этот файл BoxDemo. Java */

class Box {

double width;

double height;

double depth;

}

// Этот класс объявляет объект типа Box.

class BoxDemo {

public static void main (String args[]){

Box mybox = new Box();

double vol;

// присвоить значения экземплярным переменным объекта mybox

mybox.width = 10;

mybox.height = 20;

mybox.depth = 15;

// вычислить объем блока

vol = mybox.width * mybox.height * mybox.depth;

System.out.рrintln ("Объем равен " + vol);

}

}

Этот файл, должен быть назван BoxDemo.java, потому что метод main() находится в классе с именем BoxDemo, а не в классе с именем box. После компиляции программы можно увидеть, что были соз­даны два файла с расширением .class – один для Box-класса и один для BoxDemo-класса. Java-компилятор автоматически помещает каждый класс в его собственный class-файл. В общем случае нет необходимости в том, чтобы классы Вox и BoxDemo находились в одном исходном файле. Можно было поместить каждый класс в свой собственный файл с именами Box.java и BoxDemo.java, соответственно.

Чтобы выполнить программу, нужно выполнить BoxDemo.class, что обеспечит следующий вывод:

Объем равен 3000.0

Как указано ранее, каждый объект имеет свои собственные копии перемен­ных экземпляра. Это означает, что, если вы имеете два Box-объекта, каждый из -них обладает своей собственной копией depth* width и height. Важно по­нять, что изменения экземплярных переменных одного объекта не имеют никакого влияния на экземплярные переменные другого. Например, сле­дующая программа объявляет два Box-объекта:

// Эта программа объявляет два Box-объекта.

class Box {

double width;

­double height;

double depth;

}

class BoxDemo2 {

public static void main (String args[J) {

Box mybox1 = new Box ( ) ;

Box mybox2 = new Box ( ) ;

double vol;

// присвоить значения экземплярным переменным объекта Mybox1

Mybox1.width = 10;

Mybox1. height = 20;

Mybox1. depth = 15;

// присвоить другие значения экземплярным переменным объекта mybox2

mybox2.width = 3;

mybox2.height = 6;

mybox2.depth = 9 ;

// вычислить объем первого блока

vol = mybox1.width * mybox1 .height * mybox1. depth;

System.out.рrintln ("Объем равен " + vol) ;

// вычислить объем второго блока

vol = mybox2 . width * mybox2 .height * mybox2 . depth;

System, out. println ("Объем равен " + vol) ;

}

}

Вывод, выполненный этой программой:

Объем равен 3000.0

Объем равен 162.0

При этом можно заметить, что данные mybox1 объекта полностью отделены от данных, содержащихся в mybox2.

Соседние файлы в папке JavaLit