Учебник по Java (Серия из 11 частей)
Вступление
Объектно-ориентированное программирование (ООП) – это парадигма программирования, основанная на реальных сущностях и их поведении. Сущности могут быть реальными сущностями, такими как автомобиль, студент, или абстрактными сущностями, такими как курс, пройденный в колледже или университете.
Реализация объектно-ориентированного программирования может быть выполнена с помощью класса, представляющего реальную сущность, которая включает характеристику сущности, определенную как поле, и поведение сущности, определенное как метод или функция в классе.
Создайте класс и объект
Класс представляет собой схему объекта. Это основной синтаксис для создания класса в Java.
modifier class class_name { // define some fields.. // define some methods.. }
В этом примере создается класс с именем Студент
.
// create a class called Student public class Student { String name; String course; // create a method public void learn() { System.out.println("Student name: " + name); System.out.println("Learning " + course); } }
Лучше всего создать класс в отдельном файле.
Основываясь на приведенном выше коде, класс называется Студент
создается с полями, называемыми имя
и конечно
. Поведение представлено в виде метода с именем learn()
, к которому можно получить доступ, если создан объект из класса Student
.
Соглашение об именовании класса на Java использует первый верхний регистр (например, Студент
, Электромобиль
)
В этом коде создается объект из Ученика
класса.
public class MyApp { public static void main(String[] args) { // instantiate an object from student class Student student = new Student(); // assign a value into the fields student.name = "Joe"; student.course = "Algorithm and Data Structures"; // call the method student.learn(); } }
Выход
Student name: Joe Learning Algorithm and Data Structures
Основываясь на приведенном выше коде, объект создается с использованием ключевого слова new
, за которым следует конструктор по умолчанию без параметра. конструктор ( Студент()
) используется для создания объекта из определенного класса, в данном случае класса Студент
. Затем метод learn()
может быть вызван из объекта student
.
Конструктор
Конструктор – это специальная функция, которая используется для создания объекта из класса. В предыдущем коде использовался конструктор по умолчанию. Чтобы определить пользовательский конструктор, используйте этот базовый синтаксис.
public ClassName(params) { // assign the class fields from params }
В этом примере создается конструктор внутри класса Student
.
// create a class called Student public class Student { String name; String course; // create a constructor public Student(String name, String course) { this.name = name; this.course = course; } // create a method public void learn() { System.out.println("Student name: " + name); System.out.println("Learning " + course); } }
Основываясь на приведенном выше коде, ключевое слово this
относится к собственному классу it. Например, this.name
относится к полю имя
, определенному в Ученике
классе.
Если конструктор определен в классе, конструктор по умолчанию недоступен. Чтобы убедиться, что конструктор по умолчанию доступен, добавьте конструктор по умолчанию внутри класса.
// create a class called Student public class Student { String name; String course; // create a constructor public Student(String name, String course) { this.name = name; this.course = course; } // create a default constructor public Student() { } // create a method public void learn() { System.out.println("Student name: " + name); System.out.println("Learning " + course); } }
В этом примере объект из Student
класса создается с помощью пользовательского конструктора.
public class MyApp { public static void main(String[] args) { // instantiate an object with custom constructor Student student = new Student("Joe","Algorithm and Data Structures"); // call the method student.learn(); } }
Выход
Student name: Joe Learning Algorithm and Data Structures
Основываясь на приведенном выше коде, имя
и курс
поля назначаются с помощью конструктора, который уже определен внутри Ученика
класса.
Инкапсуляция
Инкапсуляция – это механизм защиты значения поля от прямого доступа. Инкапсуляция полезна, чтобы избежать несоответствия в значении поля. По сути, модификатор private
добавляется для реализации инкапсуляции в поле внутри класса.
// create a class called Student public class Student { // implement encapsulation in fields private String name; private String course; // create a constructor public Student(String name, String course) { this.name = name; this.course = course; } // create a default constructor public Student() { } // create a method public void learn() { System.out.println("Learning " + course); } }
Чтобы изменить или получить значение из полей внутри класса, используйте установщик
для изменения значения поля и получатель
для извлечения значения поля.
// create a class called Student public class Student { // implement encapsulation in fields private String name; private String course; // create a constructor public Student(String name, String course) { this.name = name; this.course = course; } // create a default constructor public Student() { } // create a method public void learn() { System.out.println("Learning " + course); } // using getter public String getName() { return name; } // using setter public void setName(String name) { this.name = name; } public String getCourse() { return course; } public void setCourse(String course) { this.course = course; } }
Это пример кода после добавления механизма инкапсуляции в Ученик
класс.
public class MyApp { public static void main(String[] args) { // instantiate an object with custom constructor Student student = new Student("Joe","Algorithm and Data Structures"); // change the student's name student.setName("John"); // get the student's name and course System.out.println("Student's name: " + student.getName()); System.out.println("Student's course: " + student.getCourse()); // call the method student.learn(); } }
Выход
Student's name: John Student's course: Algorithm and Data Structures Learning Algorithm and Data Structures
Основываясь на приведенном выше коде, set Name()
используется для изменения значения имени. Методы получения, включая getName()
и get Course()
, используются для получения значения из name
и курс
поля. Метод learn()
также доступен, если создан объект из класса Student
.
Дополнительное ключевое слово и метод toString()
Ключевое слово instanceof
можно использовать для проверки типа класса из созданного объекта. В этом примере объект с именем студент
проверяется, чтобы убедиться, что студент
создан или создан из Студент
класса.
public class MyApp { public static void main(String[] args) { // instantiate an object from Student class Student student = new Student("John","Operating System"); // check if the student object is instantiated from Student class if (student instanceof Student) { // print out the class name System.out.println(student.getClass().getName()); } } }
Выход
com.nadirbasalamah.Student
Основываясь на приведенном выше коде, объект student
проверяется с помощью ключевого слова instanceof
. Если это правда, то выводится имя класса из объекта студент
.
Метод toString()
может быть реализован внутри определенного класса. Этот метод в основном преобразует созданный объект в информацию об объекте в строковом
типе. Этот метод полезен для просмотра значения поля из созданного объекта и для целей отладки.
Это пример использования метода toString()
в классе Студент
.
// create a class called Student public class Student { private String name; private String course; // create a constructor public Student(String name, String course) { this.name = name; this.course = course; } // create a default constructor public Student() { } public void learn() { System.out.println("Learning " + course); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCourse() { return course; } public void setCourse(String course) { this.course = course; } // using toString() method @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", course='" + course + '\'' + '}'; } }
Основной класс.
public class MyApp { public static void main(String[] args) { // create an object from Student class Student student = new Student("Joe","Operating System"); // print out the object System.out.println(student); } }
Выход
Student{name='Joe', course='Operating System'}
На основе приведенного выше кода извлекается информация об объекте из Student
. Обратите внимание, что метод toString()
не вызывается непосредственно в основном классе, потому что toString()
вызывается автоматически, если созданный объект распечатан.
Перечисление
Тип перечисления также доступен в Java, Перечисление – это в основном тип данных, который позволяет хранить множество констант. Перечисление подходит для некоторых случаев использования, в которых требуются предопределенные константы. Это основной синтаксис создания перечисления.
modifier enum enum_name { CONSTANT_NAME, ... }
Модификаторами, разрешенными в перечислении, являются public
и модификатор по умолчанию.
В этом примере перечисление называется Роль
создана.
public enum Role { STUDENT, LECTURER }
Основываясь на приведенном выше коде, Роль
имеет много констант, в том числе СТУДЕНТ
и ЛЕКТОР
.
В соглашении об именовании константы используется только заглавная буква.
Чтобы использовать значение из определенного перечисления, используйте этот синтаксис.
enum_name.CONSTANT_NAME
Это пример использования Роль
перечисление в Ученик
класс.
// create a class called Student public class Student { private String name; private String course; // create field with Role type private Role role; // create a constructor public Student(String name, String course) { this.name = name; this.course = course; // use the value from enum this.role = Role.STUDENT; } // create a default constructor public Student() { } public void learn() { System.out.println("Learning " + course); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCourse() { return course; } public void setCourse(String course) { this.course = course; } public Role getRole() { return role; } }
Основываясь на приведенном выше коде, поле роль
назначается внутри конструктора с использованием значения из Роли
перечисления с Ролью. СТУДЕНТ
синтаксис.
Источники
Узнайте больше о классе и объекте на этой странице .
Узнайте больше о перечислении на этой странице .
Я надеюсь, что эта статья будет полезна для изучения языка программирования Java. Если у вас есть какие-либо мысли или комментарии, вы можете написать в разделе обсуждения ниже.
Учебник по Java (Серия из 11 частей)
Оригинал: “https://dev.to/nadirbasalamah/java-tutorial-7-class-and-object-lkl”