Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Статические переменные и методы
Объявляются при помощи ключевого слова 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 с.) |