Я бы сказал, что вы не совсем понимаете, как работает 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 (), который избавит от всех окон, и вы вызвали этот метод на car2, это не приведет к удалению окон car1.
Другойважная деталь в том, что вы можете определить эти переменные с помощью нескольких «префиксов» (тоже методов).Во-первых, у вас есть публичное и частное (защищено, но я не буду вдаваться в это).Объявляя переменную как закрытую, вы говорите, что единственный объект, который может получить доступ к этой переменной и изменить ее, - это тот, кто владеет ею.С другой стороны, открытая переменная может быть доступна и изменена любым другим объектом.Они доступны, но вы должны явно сказать, что хотите изменить переменную этого объекта (написав objectsName.variable, в нашем случае car1.motor).
У вас также могут быть переменные / методы, которые являются общими для всехэкземпляры класса.Для этого вы объявляете их как статические (они фактически принадлежат классу, а не какому-либо объекту этого класса).Частные / публичные все еще применяются, приватные статические переменные доступны только экземплярам этого класса (и статическим методам того же класса), в то время как публичные доступны любому другому классу / объекту.Чтобы получить к ним доступ вне класса, к которому они принадлежат, вы используете ClassName.variable / method (так Car.variable в предыдущем примере).
Иногда вам может понадобиться класс, который не имеет смысласоздание экземпляра.Я нахожу, что мне часто нужно создавать класс Maths, который содержит несколько математических операторов, которые я хочу использовать во всей программе.Создавать объект Maths не имеет смысла, поэтому вы просто определили бы все его методы как «public static» и обращались к ним всякий раз, когда вам это нужно в других ваших классах.
Надеюсь, я поставил под сомнение ваши сомнения.В любом случае, я бы посоветовал вам немного почитать об объектно-ориентированном программировании, возможно, получить книгу, которая учит Java, с большим начальным акцентом на объектную ориентацию (ОО), хотя даже если это не сложная концепция для понимания, она может быть сложнойпривыкнуть к нему и правильно программировать на языке OO, если вы не из OO.
Возможно, вы захотите взглянуть на BlueJ.Это Java IDE, которая в основном заставляет вас понимать и использовать ОО программирование.Это не то, что я предлагаю использовать слишком долго, но это может быть хорошим началом, пока вы не получите хорошее представление об основах ОО.
Zepee