Java | Урок 26. Модификатор static.

  • Главная >
  • Видео канал >
  • Java | Урок 26. Модификатор static.

УЛУЧШАЙТЕ НАВЫКИ С ПОМОЩЬЮ ПРАКТИКУМА

СЛЕДУЮЩЕЕ

На этом уроке — «Модификатор static». Парктическая работа по ходу данного уроке, которая расскажет и покажет, как работать с модификатором static, для чего он используется? И формулировка данного опнятия.

Смотрите еще больше полезных уроков на ITVDN.

Please enable JavaScript to view the comments powered by Disqus.

Регистрация через

или E-mail

Нажав на кнопку «Зарегистрироваться»,
Вы соглашаетесь с условиями использования.

Уже есть аккаунт

Получите курс бесплатно

Вы выбрали курс для изучения
«»
Чтобы получить доступ к курсу, зарегистрируйтесь на сайте.

РЕГИСТРАЦИЯ

Спасибо за регистрацию

Перейдите на почту и подтвердите Ваш аккаунт,
чтобы получить доступ ко всем
бесплатным урокам и вебинарам на сайте ITVDN. com

ПОДТВЕРДИТЬ ПОЧТУ НАЧАТЬ ОБУЧЕНИЕ

Спасибо за регистрацию

Ваш аккаунт успешно подтвержден.
Начать обучение вы можете через Личный кабинет
пользователя или непосредственно на странице курса.

НАЧАТЬ ОБУЧЕНИЕ

Подтверждение аккаунта

На Ваш номер телефона было отправлено смс с кодом активации аккаунта. Пожалуйста, введите код в поле ввода.

Отправить код еще раз

Изменить номер телефона

Ошибка

Переставь один модификатор static · GitHub

Переставь один модификатор static

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

Show hidden characters

txt»>
package com.javarush.task.task07.task0725;
/*
Переставь один модификатор static
Переставь один модификатор static, чтобы пример скомпилировался.
Требования:
1. Программа не должна считывать данные с клавиатуры.
2. В классе должна быть переменная A.
3. В классе должна быть переменная B.
4.  В классе должна быть переменная C.
5. В классе должен быть метод main.
6. В классе должен быть метод getValue.
7. В классе должно быть 4 модификатора static (переменные и методы).
*/
public class Solution {
public final static int A = 5;
public final static int B = 2;
public final static int C = A * B;
public static void main(String[] args) {
}
public int getValue() {
return C;
}
}

c#.

Как используется модификатор static в объектно-ориентированном программировании?

спросил

Изменено 7 лет, 4 месяца назад

Просмотрено 14 тысяч раз

В одном из интервью меня спросили, что означает модификатор static . Я ответил, сказав интервьюеру, что объект статического класса не может быть создан, и другие полезные моменты.

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

Я не знаю, как ответить на этот вопрос. Что я должен был сказать?

  • c#
  • oop
  • шаблоны проектирования
  • статические
  • статические методы
1

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

Здесь действительно нет правильного ответа. Пуристы могут возразить, что статика это мерзость. Прагматики могут возразить, что это заполняет зияющую дыру в абстракции «все является объектом», позволяя вам вызывать служебные методы, для которых не имеет смысла создавать экземпляр нового объекта только для их вызова. Каноническим примером этого является класс System.Math .

Общее практическое правило, которому следует большинство программистов, состоит в том, что если данные, с которыми вы работаете, не связаны с каким-либо конкретным экземпляром объекта, вероятно, имеет смысл пометить это поле/метод как статическое. В противном случае он, вероятно, должен быть обычным членом экземпляра объекта.

В документации MSDN уже есть довольно хорошее объяснение:

Используйте модификатор static для объявления статического члена, который принадлежит самому типу, а не конкретному объекту. Модификатор static можно использовать с классами, полями, методами, свойствами, операторами, событиями и конструкторами, но его нельзя использовать с индексаторами, деструкторами или типами, отличными от классов. Дополнительные сведения см. в разделе Статические классы и члены статических классов (Руководство по программированию на C#).

Модификатор static также имеет более конкретное применение в C#, например, определение методов расширения (которые могут быть определены только внутри статического класса), определение методов взаимодействия и т. д. Также стоит отметить, что все статические классы запечатаны. в C#, потому что без конструктора они не могут быть унаследованы.

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

int.Parse()

Вы можете посмотреть «static» в отношении состояния объекта/класса .

  1. «статический» используется, когда у вас есть класс, которому не нужно поддерживать информацию о состоянии для отдельного объекта, а вместо этого поддерживать информацию о состоянии для класса. Примерами являются статические переменные.
  2. Другая вещь заключается в объявлении самого класса как статического, где в объекте не может быть создан экземпляр, вместо этого вы можете вызывать статические методы, которым не требуется собственная информация о состоянии.

Другие привели несколько полезных примеров, и я не буду повторяться.

См. http://msdn.microsoft.com/en-us/library/79b3xss3%28v=vs.80%29.aspx — здесь объясняются преимущества статических классов.

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

2

Модификатор static означает, что член класса принадлежит самому классу, а не экземплярам класса.

Статический член не может быть реплицирован в приложении, даже если создано много экземпляров класса.

см. следующую ссылку для получения дополнительной информации. Статические модификаторы

См. следующий пример класса, использующего статические члены:

 class myClass
{
    статический интервал х = 5;
    статическое строковое имя = "Ашраф";
    общедоступный интервал X
    {
        получить {возврат х;}
        установить {х = значение;}
    }
    общедоступное строковое имя
    {
        получить {возвратное имя;}
        установить {имя = значение;}
    }
}
 

Статические классы полезны, когда они работают с внешними данными и не требуют установки или извлечения каких-либо полей в них.

2

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

Статический модификатор | STEMRobotics

Обычно доступ к членам класса (переменным и методам) осуществляется через ссылку на экземпляр. Оставим методы в стороне, потому что переменные класса существуют отдельно для каждого экземпляра класса (созданного с помощью нового ключевого слова). Если у вас есть переменная x в классе и вы создаете два экземпляра класса, каждый экземпляр будет иметь свою собственную переменную x, доступ к которой осуществляется по ссылке экземпляра. Вы также получаете доступ к методам через ссылку на экземпляр. Вот пример:

Результат:

  theVar=3 theVar=7  

Экземпляр 1 и экземпляр 2 относятся к отдельным экземплярам объекта класса, и поэтому каждый из них имеет свою собственную переменную theVar, которая имеет собственное значение. Говорят, что переменная является переменной экземпляра .

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

Поскольку доступ к статическим переменным через ссылку на экземпляр невозможен, для доступа к переменной используется имя класса с точкой.

Вы также можете пометить методы как статические. Это означает, что для вызова метода не требуется ссылка на экземпляр. Метод является уровнем класса или глобальным. Обратите внимание, что статические методы могут обращаться только к статическим переменным того же класса. Нестатические методы или методы экземпляра могут обращаться к статическим переменным и переменным экземпляра. Вот пример:

В этом примере будет напечатано:

  количество экземпляров = 0 
  количество экземпляров=3  

В примере используется статическая переменная для подсчета количества созданных экземпляров MyClass. Мы увеличиваем globalCount в конструкторе класса. Это сделало бы globalCount = 2, но для демонстрации доступа к статическим переменным мы напрямую увеличиваем globalCount до 3. Мы можем сделать это, поскольку у globalCount есть открытый доступ. Обратите внимание, что первый вывод равен нулю, потому что мы вызвали статический метод, который вызвал создание и инициализацию статической переменной globalCount, но мы еще не создали никаких экземпляров класса. Обратите внимание, что последний оператор вызовет ошибку компиляции, поскольку мы обращаемся к нестатической переменной через статическую ссылку (имя класса).

Вот пример выше на CodingGround. Исправьте ошибку и продемонстрируйте программу.

Вот два видео ( видео1 , видео2 ) о статических элементах. Вот подробное обсуждение статических членов.

Примечание : Хотя классы обычно не могут быть помечены как статические, внутренний класс, то есть класс внутри класса, может им быть.