Программирование на языке Java


Inside B's calime method - часть 2


 

class Static {

static int a = 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("static block initialized");

b = a * 4;

}

public static void main(String args[]) {

method(42);

} }

 

Ниже приведен результат запуска этой программы.

С:\> java Static static block initialized

Х = 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);

} }

 

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

С:\> Java StaticByName

а = 42 b = 99

 

abstract

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

 

abstract class A {

abstract void callme();

void metoo() {

System.out.println("Inside A's metoo method");

} }

class B extends A {

void callme() {

System.out.println("Inside B's callme method");

} }

class Abstract {

public static void main(String args[]) {

A a = new B():

a.callme():

a.metoo():

} }

 

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

 

С:\> Java Abstract




- Начало -  - Назад -  - Вперед -