Я бы сказал, что вы не совсем понимаете, как работает Java (или любой другой объектно-ориентированный язык).
В объектно-ориентированных языках классы представляют различные типы вещей, которые могут вам понадобиться во всей вашей программе. Лучше проиллюстрировать это на примере. Допустим, в вашей программе вы собираетесь моделировать автомобили.
У вас будет класс Car, и вы создадите новый объект (новый экземпляр) класса Car для представления каждой новой машины, которая вам нужна. Сам автомобиль состоит из разных компонентов, у вас есть колеса, двигатель, окна и т. д. Таким образом, у вас будут классы для каждого из этих компонентов, и каждый объект автомобиля будет содержать свой собственный набор объектов из всех разных классов, то есть:
Car1 {
motor1
window1.1, window1.2
wheel1.1,wheel1.2
}
Car2 {
motor2
window2.1, window2.2
wheel2.1,wheel2.2
}
В этом случае вы должны определить каждый из компонентов автомобилей как поля класса. Эти поля для всех эффектов являются «глобальными» в том смысле, что к ним можно получить доступ из любого метода этого класса. Деталь, которую вы, кажется, упускаете, заключается в том, что каждый новый объект этого класса имеет свой собственный набор полей и методов. Они не разделяют их, поэтому каждый мотор, комплект колес и т. д. принадлежит одному экземпляру класса Car. Итак, если в классе автомобиля у вас есть метод с именем, скажем, deleteWindows(), который избавится от всех окон, и вы вызвали этот метод для автомобиля2, это не приведет к удалению окон автомобиля1.
Еще одна важная деталь заключается в том, что вы можете определить эти переменные с помощью нескольких «префиксов» (методов тоже). Во-первых, у вас есть общедоступные и частные (защищенные, но я не буду вдаваться в подробности). Объявляя переменную как приватную, вы говорите, что единственный объект, который может получить доступ к этой переменной и изменить ее, — это тот, кто ею владеет. С другой стороны, общедоступная переменная может быть доступна и изменена любым другим объектом. Они доступны, но вы должны явно сказать, что хотите изменить переменную этого объекта (написав имя_объекта.variable, в нашем случае car1.motor).
Вы также можете иметь переменные/методы, которые являются общими для всех экземпляров класса. Для этого вы объявляете их как статические (они фактически принадлежат классу, а не какому-либо объекту этого класса в частности). Private/public по-прежнему применяются, частная статическая переменная доступна только экземплярам этого класса (и статическим методам того же класса), а общедоступные доступны любому другому классу/объекту. Чтобы получить к ним доступ извне класса, к которому они принадлежат, вы используете ClassName.variable/method (то есть Car.variable в предыдущем примере).
Иногда вам может понадобиться класс, экземпляр которого не имеет смысла создавать. Мне часто приходится создавать класс Maths, который содержит несколько математических операторов, которые я хочу использовать во всей программе. Нет смысла создавать объект Maths, поэтому вы просто определяете все его методы как «общедоступные статические» и получаете к ним доступ, когда вам нужно, в других ваших классах.
Надеюсь, я развеял ваши сомнения. В любом случае, я бы посоветовал вам немного почитать об объектно-ориентированном программировании, возможно, получить книгу, которая учит Java с большим первоначальным акцентом на объектную ориентацию (ОО), поскольку, хотя это не сложная концепция для понимания, это может быть трудно привыкнуть к этому и правильно программировать на языке OO, если вы пришли из не-OO.
Возможно, вы захотите изучить BlueJ. Это Java IDE, которая в основном заставляет вас понимать и использовать объектно-ориентированное программирование. Это не то, что я предлагаю использовать слишком долго, но это может быть хорошим местом для начала, пока вы хорошо не разберетесь в основах объектно-ориентированного программирования.
Цепи
person
Zepee
schedule
29.11.2010