Иногда мы не хотим, чтобы от некоторого созданного нами класса можно было производить классы-потомки. Например, это может понадобиться в целях безопасности.
В этом случае мы объявляем класс с ключевым словом final. Вот пример:
final class someclass
{
//некоторые поля и методы классаprivate int somedata;
...
}
Теперь от нашего класса someclass нельзя делать классы-потомки. Т. е тут, например, будет ошибка:
class newclass extends someclass //Ошибка!
{
...
}
Введение в Java. Урок 14. Статические члены класса
Переменные, которые вы объявляете внутри класса, относятся к определенному экземпляру класса. Например, у класса worker, который мы рассматривали на прошлых уроках, есть переменная Age (возраст). Понятно, что у одного работника возраст один, а у другого - другой, и эти два возраста между собой никак не связаны. С другой стороны, иногда нам нужна общая переменная на все экземпляры класса. Например, это может быть счетчик количества экземпляров класса. В этом случае такую переменную надо объявить с модификатором static. Вот пример:
class someclass
{
//Счетчикstatic public int number;
//Конструкторpublic someclass()
{
number++; //Увеличиваем счетчик
}
}
class Test{
public static void main(String [] args){
//Создаем два экземпляра класса someclass
someclass z1=new someclass();
someclass z2=new someclass();
System.out.println(someclass.number + "\n");
}
}
Как вы видите, переменная number объявлена как static. Это означает, что она одна на все экземпляры. В конструкторе она увеличивается на 1. Т. е. для первого экземпляра класса она будет равна 1, для второго - 2 и т. д. Что мы и проверяем в классе Test - заводим два экземпляра класса someclass, а затем выводим значение number. Естественно, что number будет равно 2. Обратите внимание, что в строке
...
System.out.println(someclass.number + "\n");
переменную number мы извлекаем не из конкретного экземплярра класса (z1, z2), а из самого класса someclass. Это возможно именно потому, что переменная number - статическая. Но, в принципе, в этом месте мы могли бы использовать и конкретный экземпляр класса - результат был бы тот же самый.
Уроки по Visual C++.NET, MFC, ActiveX, COM-технологиям. Примеры программ. Каждый урок содержит информацию
только по существу и расчитан на 10-20 минут. Уроки по каждой теме
независимы.