Static java
Автор Иван задал вопрос в разделе Другие языки и технологии
В чем различие ключевых слов public и static в java? И объясните конкретно , что такое экземпляр класса. и получил лучший ответ
Ответ от Денис Цветцих[новичек]
Просто поймите разницу между классом и объектом. Класс - это абстракция, он описывает структуру какой-нибудь сущности. Например человек, он имеет рост, вес. Объект - это экземпляр класса. В нашем примере - это конкретный человек ростом 180 сантиметров и весом 80 килограммов.
ПАБЛИК - задаёт видимость членов класса. Если член класса объявлен как ПАБЛИК (но не СТАТИК) , то после создания объекта этот член будет доступен всем другим классам и объектам этих классов. Этому члену нельзя будет присвоить или получить значение без создания объекта.
Статик - объявляет, что свойство принадлежит именно классу, а не объекту. Получить и присвоить значение статическому члену можно только использую класс, а не объекты этого класса.
То есть ПАБЛИК задает видимость (могут ли использовать этом член) другие классы и объекты, а СТАТИК определяет, у кого надо этот член искать (у класса или у объекта) . Надеюсь я ответил на вопрос.
Я программист С++, но это вам объяснить смогу.
public - это переменная к которой вы можете обратиться и напрямую изменить её.
class my1
{
public:
int a;
}
my1 mc;
mc.a = 10;
Если бы я объявил private или protected, то доступа таким способом соответственно бы не было.
static - переменная, это переменная общая для всех классов данного типа и дочерних классов.
т. е.
class my2
{
public:
static int b;
}
my2 mc;
my2 mc2;
mc.b = 10
При этом в mc2 переменная b будет тоже содержать число 10.
Если static используется в функции, то после завершения она останется в памяти и при следующем вызове будет содержать последнее положенное в неё число. (хотя здесь я возможно путаю с extern).
Разница между классом и экземпляром класса в следующем: предположим класс это описанеие определённого типа данных, тогда объект/экземпляр класса это переменная этого типа. Вообще в Объектно Ориентиированных языках так и есть существует не редко класс для каждого типа. Int например в .NET имеет класс в пространстве имён System.Int32. В Java аналогично скорее всего.