Вход/Регистрация
Основы программирования на Java
вернуться

Сухов С. А.

Шрифт:

class Static {

static int а = 3;

static int b;

static void method(int x) {

System.out.println("x =” + x);

System.out.println("a =” + a);

System.out.println("b = " + b);

}

static {

System.out.println("Статический блок инициализации");

b = а * 4;

}

public static void main(String args[]) {

method(42);

}

}

Результат запуска этой программы:

х = 42

а = 3

b = 12

В следующем примере мы создали класс со статическим методом и несколькими статическими переменными. Второй класс может вызывать статический метод по имени и ссылаться на статические переменные непосредственно через имя класса.

class StaticClass {

static int a = 42;

static int b = 99;

static void callme {

System.out.println("a =” + a);

}

}

class StaticByName {

public static void main(String args[]) {

StaticClass.callme;

System.out.println("b =” + StaticClass.b);

}

}

А вот и результат запуска этой программы:

а = 42

b = 99

7.16. Абстрактные классы

Бывают ситуации, когда нужно определить класс, в котором задана структура какой-либо абстракции, но полная реализация всех методов отсутствует. В таких случаях вы можете с помощью модификатора типа abstract объявить, что некоторые из методов обязательно должны быть замещены в подклассах. Любой класс, содержащий методы abstract, также должен быть объявлен как abstract. Поскольку у таких классов отсутствует полная реализация, их представителей нельзя создавать с помощью оператора new. Кроме того, нельзя объявлять абстрактными конструкторы и статические методы. Любой подкласс абстрактного класса либо обязан предоставить реализацию всех абстрактных методов своего суперкласса, либо сам должен быть объявлен абстрактным,

abstract class А

{

abstract void callme;

void metoo {

System.out.println("Вызван metoo метод класса A");

}

}

class В extends A {

void callme {

System.out.println("Вызван callme метод класса В");

}

}

class Abstract {

public static void main(String args[]) {

A a = new B;

a.callme;

a.metoo;

}

}

В нашем примере для вызова реализованного в подклассе класса А метода callme и реализованного в классе А метода metoo используется динамическое назначение методов, которое мы обсуждали раньше,

Вызван callme метод класса В

Вызван metoo метод класса А

8. ПАКЕТЫ И ИНТЕРФЕЙСЫ

Пакет (package) — это некий контейнер, который используется для того, чтобы изолировать имена классов. Например, вы можете создать класс List, заключить его в пакет и не думать после этого о возможных конфликтах, которые могли бы возникнуть, если бы кто-нибудь еще создал класс с именем List.

Интерфейс — это явно указанная спецификация набора методов, которые должны быть представлены в классе, который реализует эту спецификацию. Реализация же этих методов в интерфейсе отсутствует. Подобно абстрактным классам интерфейсы обладают замечательным дополнительным свойством — их можно многократно наследовать. Конкретный класс может быть наследником лишь одного суперкласса, но зато в нем может быть реализовано неограниченное число интерфейсов.

8.1. Пакеты

Все идентификаторы, которые мы до сих пор использовали в наших примерах, располагались в одном и том же пространстве имен (name space). Это означает, что нам во избежание конфликтных ситуаций приходилось заботиться о том, чтобы у каждого класса было свое уникальное имя. Пакеты — это механизм, который служит как для работы с пространством имен, так и для ограничения видимости. У каждого файла java есть 4 внутренних части, из которых мы до сих пор в наших примерах использовали только одну. Ниже приведена общая форма исходного файла Java.

  • Читать дальше
  • 1
  • ...
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: