Объекты являются основной частью объектно-ориентированного программирования. Крайне важно знать, как они работают.
При создании программного обеспечения мы перемещаем и манипулируем большим количеством данных. Данные поступают в разных формах, поэтому нам нужен способ представления наших данных в нашем коде. Java предоставляет 8 основных примитивных типов данных.
byte for whole numbers short for whole numbers int for whole numbers long for whole numbers float for floating numbers double for floating numbers char for single character(ACII table) boolean logical - can be true or false
Используя эти примитивы, мы можем представлять целые числа, числа с плавающей запятой, отдельные символы и логические логические типы.
Этих примитивов недостаточно для обработки всех типов данных, которые нам понадобятся для написания наших приложений. Вот почему у нас есть объекты. Например, наше приложение работает с данными учащихся. Было бы здорово иметь некоторый тип данных, в котором мы могли бы представить студента как сущность. Мы можем сделать это, создав собственный класс Student с его свойствами и методами.
Класс и объекты в Java
Объект в Java — это реализация класса. Класс дает нам шаблон или мы можем сказать структуру для нашего объекта. В классе мы можем объявить свойства и методы объекта.
Класс — это синяя печать для объектов. Объект является фактической реализацией своего класса.
public class Student { public String firstName; public String lastName; public int age; }
У нас есть класс выше с 3 переменными экземпляра. Даже имя — экземпляр говорит о том, что они принадлежат объекту. Итак, эти три переменные являются свойствами объектов, которые будут созданы из этого класса.
public static void main(String[] args) { Student student = new Student(); System.out.println(student); // Student@4617c264 }
Вот как мы создаем объект из класса. Ключевое слово new
всегда используется для создания объектов в Java.
Student student
эта часть называется ссылочным типом, а student
является фактической ссылкой. Мы назвали это ссылкой, потому что Java хранит объекты в памяти и указывает на них, используя ссылку. Даже когда мы попытаемся напечатать его, мы получим что-то вроде этого Student@4617c264
. Это адрес, по которому находится фактический объект. Используя эту ссылку, мы можем получить доступ к свойствам и методам объекта.
Здесь мы создали два объекта. В памяти у нас будут разные места для этих объектов, и каждая ссылка будет указывать на свой объект.
Следует также отметить, что свойства объекта будут иметь значения по умолчанию, если ничего не назначено. Значение по умолчанию для объекта равно null, числовое значение по умолчанию — 0, а логическое значение по умолчанию — false.
Мы получаем доступ к свойствам объекта, используя имя ссылки и .
. В приведенном выше примере мы присвоили значения нашему первому объекту и распечатали их после.
Разные объекты не связаны друг с другом. Поэтому, когда мы меняем firstName
на student
объект, это никак не повлияет на student1
объект. Хорошо, если переменная статическая, она принадлежит классу, а не конкретному объекту. Тогда это будет иметь эффект.
Поговорим о нестатических методах в классе. Очень часто методы объекта будут манипулировать свойствами объекта.
Последнее, что я хочу упомянуть, это статические свойства и методы в классе. Статические свойства принадлежат самому классу, а не конкретному объекту/экземпляру (даже если конкретный объект имеет доступ к статическим свойствам и методам). Правильный способ использования статических членов — по имени класса. Классы, состоящие из статических методов, обычно являются вспомогательными классами, они не служат типом данных, и мы не создаем из них объект (например, java.util.Arrays и java.util.Math). Существует много примеров гибридных классов, в которых члены статики и экземпляра вместе.
Конструктор на Java
Конструктор — это специальный метод для создания объекта.
public class Student { public String firstName; public String lastName; public int age; public Student(String firstName, String lastName, int age) { this.firstName = firstName; this.lastName = lastName; this.age = age; } }
В приведенном выше примере у нас есть класс Student с одним конструктором и тремя аргументами.
- Имя конструктора совпадает с именем класса.
- конструктор может иметь аргументы так же, как и методы.
- класс может иметь несколько конструкторов.
Теперь давайте посмотрим, как мы можем использовать наш конструктор.
new Student("John", "Doe", 25);
эта часть использует наш конструктор. Это то же самое, что и с методами, если аргументы совпадают, будет вызван конструктор.- Свойства наших значений назначаются нашим конструктором, поэтому нам не нужно назначать одно за другим.
Из того же класса мы создаем объект, но не предоставили никаких аргументов, и он не компилируется. Причина, по которой он не компилируется, заключается в том, что нет конструктора, который бы соответствовал пустым аргументам.
Первоначально, когда мы создаем класс, конструктор по умолчанию будет предоставлен java. У конструктора по умолчанию есть какие-либо аргументы, и он пуст.
При создании нашего единственного конструктора в нашем классе java не будет предоставлять конструктор по умолчанию.
Мы можем просто добавить пустой конструктор в наш класс, чтобы решить эту проблему.
student
использует конструктор с тремя аргументами.student1
использует пустой конструктор без аргументов.
Вот и все, хорошего дня!
This article is part of the series of articles to learn Java programming language from Tech Lead Academy: 1. Introduction to programming 2. OS, File, and File System 3. Working with terminal 4. Welcome to Java Programming Language 5. Variables and Primitives in Java 6. Methods with Java 7. Java Math Operators and special operators 8. Conditional branching in Java 9. Switch statement in Java 10. Ternary operator in Java 11. Enum in Java 12. String class and its methods in Java 13. Loops in Java 14. Access modifiers in Java 15. Static keyword in Java 16. The final keyword in Java 17. Class and Object in Java 18. Object Oriented Programming in Java 19. OOP: Encapsulation in Java 20. Inheritance in Java 21. Abstraction in Java 22. Polymorphism in Java 23. Overriding vs Overloading in Java 24. OOP Design Principles in Java 25. Array in Java 26. Data Structures with Java 27. Collection framework in Java 28. ArrayList in Java 29. Set in Java 30. Map in Java 31. LocalDate in Java 32. Exception in Java 33. IO in Java 34. Design Patterns 35. Generics in Java 36. Multithreading in java 37. JUnit 38. Big O Notation for coding interviews 39. Top 17 Java coding interview questions for SDET