Н.А. Вязовик - Программирование на Java

Здесь есть возможность читать онлайн «Н.А. Вязовик - Программирование на Java» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Старинная литература, Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование на Java: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование на Java»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Программирование на Java — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование на Java», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Большинство стандартных классов переопределяет этот метод, строго следуя всем соглашениям.

Метод public String toString() возвращает строковое представление объекта. В классе Object этот метод реализован следующим образом:

public String toString() {

return getClass().getName() + "@" +

Integer.toHexString(hashCode());

}

То есть возвращает строку, содержащую название класса объекта и его хеш-код в шестнадцатеричном формате.

В классах-наследниках этот метод может быть переопределен для получения более наглядного описания объекта. Обычно это значения некоторых полей, характеризующих экземпляр. Например, для книги это может быть название, автор и количество страниц:

package demo.lang;

public class Book {

private String title;

private String author;

private int pagesNumber;

public Book(String title, String author,

int pagesNumber) {

super();

this.title = title;

this.author = author;

this.pagesNumber = pagesNumber;

}

public static void main(String[] args) {

Book book = new Book("Java2","Sun",1000);

System.out.println("object is: " + book);

}

public String toString() {

return "Book: " + title + " ( " + author +

", " + pagesNumber + " pages )";

}

}

При запуске этой программы на экран будет выведено следующее:

object is: Book: Java2 ( Sun, 1000 pages )

Большинство стандартных классов переопределяет этот метод. Экземпляры класса String возвращают ссылку на самих себя ( this ).

Метод wait(), notify(), notifyAll() используются для поддержки многопоточности и были подробно рассмотрены в лекции 12. Они определены с атрибутом final и не могут быть переопределены в классах-наследниках.

Метод protected void finalize() throws Throwable вызывается Java-машиной перед тем, как garbage collector (сборщик мусора) освободит память, занимаемую объектом. Этот метод уже подробно рассматривался в лекции 4.

Метод protected native Object clone() throws CloneNotSupportedException создает копию объекта. Механизм клонирования подробно рассматривался в лекции 9.

Class

В запущенной программе Java каждому классу соответствует объект типа Class. Этот объект содержит информацию, необходимую для описания класса – поля, методы и т.д.

Класс Class не имеет открытого конструктора – объекты этого класса создаются автоматически Java-машиной по мере загрузки описания классов из class -файлов. Получить экземпляр Class для конкретного класса можно с помощью метода forName():

public static Class forName(String name, boolean initialize, ClassLoader loader) – возвращает объект Class, соответствующий классу, или интерфейсу, с названием, указанным в name (необходимо указывать полное название класса или интерфейса), используя переданный загрузчик классов. Если в качестве загрузчика классов loader передано значение null, будет взят ClassLoader, который применялся для загрузки вызывающего класса. При этом класс будет инициализирован, только если значение initialize равно true и класс не был инициализирован ранее.

Зачастую проще и удобнее воспользоваться методом forName(), передав только название класса: public static Class forName(String className),– при этом будет использоваться загрузчик вызывающего класса и класс будет инициализирован (если до этого не был).

public Object newInstance() – создает и возвращает объект класса, который представляется данным экземпляром Class. Создание будет происходить с использованием конструктора без параметров. Если такового в классе нет, будет брошено исключение InstantiationException. Это же исключение будет брошено, если объект Class соответствует абстрактному классу, интерфейсу, или какая-то другая причина помешала созданию нового объекта.

Каждому методу, полю, конструктору класса также соответствуют объекты, список которых можно получить вызовом соответствующих методов объекта Class: getMethods(), getFields(), getConstructors(), getDeclaredMethods() и т.д. В результате будут получены объекты, которые отвечают за поля, методы, конструкторы объекта. Их можно использовать для формирования динамических вызовов Java – этот механизм называется reflection . Необходимые классы содержатся в пакете java.lang.reflection.

Рассмотрим пример использования этой технологии:

package demo.lang;

interface Vehicle {

void go();

}

class Automobile implements Vehicle {

public void go() {

System.out.println("Automobile go!");

}

}

class Truck implements Vehicle {

public Truck(int i) {

super();

}

public void go() {

System.out.println("Truck go!");

}

}

public class VehicleStarter {

public static void main(String[] args) {

Vehicle vehicle;

String[] vehicleNames = {"demo.lang.Automobile",

"demo.lang.Truck", "demo.lang.Tank"};

for(int i=0; i

try {

String name = vehicleNames[i];

System.out.println("look for class for: " + name);

Class aClass = Class.forName(name);

System.out.println("creating vehicle...");

vehicle = (Vehicle)aClass.newInstance();

System.out.println("create vehicle: " + vehicle.getClass());

vehicle.go();

} catch(ClassNotFoundException e) {

System.out.println("Exception: " + e);

} catch(InstantiationException e) {

System.out.println("Exception: " + e);

}

}

}

}

Пример 13.3.

Если запустить эту программу, на экран будет выведено следующее:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование на Java»

Представляем Вашему вниманию похожие книги на «Программирование на Java» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Алистер Маклин - South by Java Head
Алистер Маклин
Отзывы о книге «Программирование на Java»

Обсуждение, отзывы о книге «Программирование на Java» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x