Другие языки программирования и технологии

В чем различие ключевых слов public и static в java? И объясните конкретно , что такое экземпляр класса.

В литературе пишут : public -делает класс ,метод, переменную доступными для любого другого класса. Static-делает метод или переменную принадлежащую классу в противоположность экземпляра класса.Экземпляр класса-какой-либо объект принадлежащий какому-либо классу.Мне кажется,что public и static обладают одинаковыми свойствами.
Просто поймите разницу между классом и объектом. Класс - это абстракция, он описывает структуру какой-нибудь сущности. Например человек, он имеет рост, вес. Объект - это экземпляр класса. В нашем примере - это конкретный человек ростом 180 сантиметров и весом 80 килограммов.

ПАБЛИК - задаёт видимость членов класса. Если член класса объявлен как ПАБЛИК (но не СТАТИК) , то после создания объекта этот член будет доступен всем другим классам и объектам этих классов. Этому члену нельзя будет присвоить или получить значение без создания объекта.

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

То есть ПАБЛИК задает видимость (могут ли использовать этом член) другие классы и объекты, а СТАТИК определяет, у кого надо этот член искать (у класса или у объекта) . Надеюсь я ответил на вопрос.
СИ
Серёга Ионов
200
Лучший ответ
Андрей Крутов спасибо про статик все понятно
Я программист С++, но это вам объяснить смогу.

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 аналогично скорее всего.