Статические переменные и методы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Статические переменные и методы



Объявляются при помощи ключевого слова static.

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

 

Лекция 4

 

Методы, объявленные как static, могут работать только с переменными и методами, объявленными как static. Такие методы можно вызвать даже если объект не создан. В статических методах нельзя ссылаться на this и на super() (конструктор базового класса).

Метод main() объявляется как static, потому что должен вызваться прежде, чем будут созданы какие-либо объекты.

Пример:

 

class MyClass

{ String a;

static int b;

……………

public static void main(String args[])

{ MyClass MC = new MyClass();

…………………..}

}

 

Выделение памяти: статические переменные создаются один раз, как глобальные, то есть нет дублирования, как при нестатических переменных.

Статические переменные можно вызывать, не создав объекта класса.

Пример:

 

public class Myclass

{static boolean switch = true;

static int a = 1;

static int b;

public static void f1(int x)

{ switch =! switch;

System.out.println(“x= “+x);

System.out.println(“a= “+a);

}

static{ //статический блок инициализации

b=a*4;}

public static void main(String args[])

{ f1(25);}

}

 

switch – изменяемая переменная, и вызов метода f1 из каждого экземпляра объекта или любого метода меняет состояние switch для всех экземпляров объектов, в которых эта переменная определена.

Последовательность выполнения операторов:

a=1;

b=4;

вызов метода main() и следовательно метода f1(25).

Статические переменные объявляют, когда нужна общая переменная на все экземпляры класса. Это может быть, например, счетчик количества экземпляров класса.

Пример:

 

class someclass

{ static public int number; //счётчик

public someclass();

{ number++;}

}

class Test

{ public static void main(String args[])

{ someclass z1 = new someclass();

someclass z2 = new someclass();

System.out.println(someclass. number);

}

}

 

main() – главная функция, с её начинается выполнение любой программы. Она вызывается кодом, который находится вне программы (поэтому main() объявляется как public).

 

Абстрактные методы

Объявляются при помощи ключевого слова abstract:

 

abstract void my_f1();

 

Абстрактный метод не имеет тела, нельзя даже ставить { }. Эти методы удобно использовать, если необходимо, чтобы метод присутствовал во всех классах потомках, но во всех классах имел разную реализацию.

 

Рис. 3.1. Абстрактный метод и его реализация

 

Метод “зарплата” абстрактный. При создании производных классов этот метод переопределяется так, как нужно в каждом из них.

Пример:

 

abstract class worker

{ protected int Age;

public String Name;

abstract public void setSalary(int newSalary);

}

class boss extends worker

{ public void setSalary(int newSalary)

{ if (newSalary >=0)

Salary = newSalary;

else Salary = 3000;

}

}

 

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

Экземпляр:

 

worker w = new worker(); //нельзя создавать

 

Абстрактный класс может содержать и неабстрактные методы.

 

Методы final

Эти методы объявляются как окончательные, не подлежащие дальнейшему переопределению при наследовании.

 

final void my_fun()

{…}

 

Ключевое слово final нельзя использовать для абстрактных методов.

Параметры, принимаемые методом final, могут передаваться как по значению (для базовых простых предопределённых типов данных), так и по ссылке (если в качестве параметра указывается объект).

 



Поделиться:


Последнее изменение этой страницы: 2017-02-09; просмотров: 110; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.248.208 (0.007 с.)