Урок №13. Класи. Методи. Поля. [Java українською]
HTML-код
- Опубликовано: 26 июн 2024
- Базовий курс з програмування мовою Java.
У цьому уроці ми створимо новий клас, дали йому декілька полів та метод. Ініціалізували об'єкт з конструктора цього класу та попрацювали з ним. Окрім того, поговорили про те, що таке void, що означає, що метод щось повертає та як загалом працювати з методами, передавати у них параметри.
==============================
Посилання на JDK: jdk.java.net/java-se-ri/17
Посилання на IntelliJ IDEA: www.jetbrains.com/idea/download
==============================
Зміст відео:
0:00 - Вступ до відео.
0:07 - Для чого існує клас.
1:35 - Створюємо новий клас.
2:33 - Створюємо примірники класу.
4:18 - Конструктори.
7:14 - void / return.
8:39 - Параметри методів.
9:23 - Підсумки уроку.
==============================
Дякую, що дивитесь! Прошу залишати відгуки та побажання у коментарях.
Telegram-канал: t.me/java_classroom
#java #javacourse #ukraine #ua #programming #programminglanguage #программирование #програмування #курси #українською #мова #джава #ide #intellij #idea #download #project #language #programminglanguage #class #object #javaobject #professor #об'єкт #клас #класс #объект #професор #профессор #конструктор #construtor #поле #метод #повертає #значення #return #void #method #field #methods #возвращает
Домашнє завдання до уроку №13:
1) Створити клас Professor відповідно до того, як його було створено в відео.
2) Створити клас Student, який містить поле ім’я, прізвище, номер групи та курс (рік навчання).
3) Додай метод mail() до класу студента.
нарешті усе вийшло дякую
Супер! :)
Дякую!
Все послідовно та зрозуміло :)
налаштування зробив use editor lens on scrollbar hover в settings
Дякую за урок!
1.
public class Professor {
String name;
String surname;
int experience;
Professor(String name, String surname, int experience) {
this.name = name;
this.surname = surname;
this.experience = experience;
}
public void setName(String name) {
this.name = name;
}
public void getName() {
System.out.println("Ім'я професора " + name);
}
public void setSurname(String surname) {
this.surname = surname;
}
public void getSurname() {
System.out.println("Прізвище професора " + surname);
}
public void setExperience(int experience) {
this.experience = experience;
}
public void getExperience() {
System.out.println("Досвід професора " + experience);
}
void mail(String message) {
System.out.printf("Професор", name, "надіслав повідомлення", message);
}
}
2.
public class Student {
String name;
String surname;
int numberGroup;
int yearStudy;
Student(String name, String surname, int numberGroup, int yearStudy) {
this.name = name;
this.surname = surname;
this.numberGroup = numberGroup;
this.yearStudy = yearStudy;
}
public void setName(String name) {
this.name = name;
}
public void getName() {
System.out.println("Ім'я студента: " + name);
}
public void setSurname(String surname) {
this.surname = surname;
}
public void getSurname() {
System.out.println("Прізвище студента: " + surname);
}
public void setNumberGroup(int numberGroup) {
this.numberGroup = numberGroup;
}
public void getNumberGroup() {
System.out.println("Ім'я студента: " + numberGroup);
}
public void setYearStudy(int yearStudy) {
this.yearStudy = yearStudy;
}
public void getYearStudy() {
System.out.println("Ім'я студента: " + yearStudy);
}
void mail(String message) {
System.out.println("Студент " + name + " надіслав повідомлення " + message);
}
}
3.
public class Main {
public static void main(String[] args) {
Professor professor = new Professor("Alex", "M.", 12);
Student student = new Student("Max", "L.", 1, 2018);
professor.setName("Artur");
professor.getName();
student.setNumberGroup(3);
student.getNumberGroup();
}
}
В даному випадку як і в класі Professor та Student я використав гетери та сетери, як додаток на випадок якщо користувач хоча змінити дане поле, думаю також було б добре застосувати інкапсуляцію зробити поля приватними і не отримувати до них доступ на пряму, але розгляну більш детально інкапсуляцію в наступному уроці.
Привіт!
Супер, зробив навіть більше, ніж треба!👍
Щодо інкапсуляції та використання геттерів-сеттерів - правильна ідея. Саме так і треба робитти. Проте не забувай робити самі поля приватними, оскільки виходить, що доступ до полів класу лишився не заблокований, хоча гетттери-сеттери створені.
Щодо методів get - не варто додавати до них System.out.println та будь-які інші інструкції, якщзо вони не необхідні. Ідея геттеру саме в тому, що він віддає значення поля. Так, цей метод може містити і додаткову логіку, але це скоріш "екзотика".
У випадку з методом mail() з відео, де прямо використано System.out.println - працює інакше. Цей метод містить іншу логіку і ми самі заклали в нього ідею щось виводити в консоль. Метод get - не те саме.
Д/З виконано гарно!
дякую!
Дякую!!!
Дякую
👍
може якісь налаштування потрібно
Ось щось знайшов:
stackoverflow.com/questions/40627924/intellij-idea-how-to-always-show-method-parameter-names
Але це тільки в IntelliJ IDEA.
Якщо комусь цікаво*
Конструктор - ініціалізатор, набір інструкцій, який для новоствореного об'єкта задає деякий початковий стан.
Ключове слово new - викликається конструктор, який ініціалізує поля(робить все, що ви напишете в ньому)
Конструктор не є членом класу, тобто він не успадковується, тому ми і використовуємо ключове слово super для його виклику з суперкласу(пізніше, буде урок по цьому).
До будь-якого члена класу ми можемо звернутися через "крапку", до полів, методів. До конструктора ми не зможемо звернутися.
Перегнав мене з успадкуванням, чекайте урок №15. Тепер додам цей коментар у відео ;)
А про доступ до конструктора через крапку, якщо чесно, я навіть не подумав і не сказав, бо сам ніколи не намагався так зробити😂😅
P.S.: Думаю можна зробити окремий урок де дуже-дуже заглибитися у конструктор, аби пояснити усі деталі, що його стосуються.
@@mykolamurza Ну якщо до кожної теми заглиблюватися, то можна вічність уроки знімати 🤣
Так, але зауваження щодо конструктора дуже слушне, я так і думав, що щось не скажу про нього) Виправимо, дякую за відгуки! 👍
java: incompatible types: java.lang.String cannot be converted to int
Дай більше деталей, на якому моменті це стається. Скоріше за все, десь рядок використовується як число, або передається рядок параметром, де аргумент - int. Можливо в конструкторі ставиш третім параметром рядок "20" (experience), а має бути просто 20, як int.
Professor professorAlex = new Professor("Alex", "M", "10" );без name: surname: не знаю чому може щось пропустив
"name: " - це підказка інтерфейсу IntelliJ IDEA, їх писати не треба і в уроці я їх також не пишу :)
Десь на 6:51 видно, що само підставляється.
public class Main {
public static void main(String[] args) {
Professor professorAlex = new Professor("Alex", "New","22");
professorAlex.mail();public class Professor {
String name;
String surname;
int experience;
Professor(String name,String surname, int experience) {
this.name = name;
this.surname = surname;
this.experience = experience;
}
public Professor(String alex, String aNew, String number) {
}
void mail(){
System.out.println(name + ":Send message");
}
}
}
}null:Send message чого не знаю
Схоже, що ти передаєш три рядки в конструктор і спрацьовує другий конструктор, а треба - 2 рядки і число, аби спрацював перший конструктор.
У другому конструкторі відсутнє присвоєння значень, типу this.name = name тощо.
Відповідно, коли ти викликаєш метод mail після використання другого конструктора, всі поля об'єкту null і в результаті вивід в консоль теж з null.
Видали другий конструктор і передавай третім параметром число. Тоді спрацює правильний конструктор і присвоїть правильні значення полям.
Professor professorAlex = new Professor("Alex"); чомусь немає name: перед Alex
professorAlex.mail();
Professor professorNick = new Professor("Nick");
professorNick.mail();
Яку IDE використовуєш?
"name: " це підказка інтерфейсу IntelliJ IDEA, самому писати не треба. Це треба аби ти розумів в який аргумент (методу, конструктору) пишеш значення, і не треба було перевіряти послідовність аргументів самостійно.
ID 2023
IntelliJ IDEA Community Edition 2023.1