Re: Інтерфейс
хіба можна передавати параметру метода цілий об'єкт?
Чому ні? Ніхто не заважає цього робити. Тим паче, якщо тип параметру - клас, з якого наслідує і об'єкт "Людина" і "Папуга"
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Java → Інтерфейс
Для відправлення відповіді ви повинні увійти або зареєструватися
хіба можна передавати параметру метода цілий об'єкт?
Чому ні? Ніхто не заважає цього робити. Тим паче, якщо тип параметру - клас, з якого наслідує і об'єкт "Людина" і "Папуга"
у вас повинна бути одна функція
make_speak(<Щось> speaker)
, що реалізується і для людини, і для папуги. Одна функція для двох об'єктів.
P.S. Підказка: об'єкти похідного класу також є об'єктами базового класу.
Дякую за підказку, але всеодно нічого в голову не приходить напевно подумаю над цим завтра
хіба можна передавати параметру метода цілий об'єкт
Звісно, і навіть більше. Я вам зараз відкрию таємницю: коли ви пишете
object.method(parameter1,parameter2);
насправді* викликається
method(object,parameter1,parameter2);
Перший параметр методу - неявний - доступний у ньому під ім'ям this і може використовуватися неявно.
Тільки треба враховувати, що об'єкти в Java передаються, на відміну від звичайних величин, за посиланням, тобто у метод передається адреса об'єкту, і його можна змінювати:
void setValue(int a)//a приймає значення типу int
{
a=5;
}
...
int b=3;
setValue(b);//b лишилося 3, значення a нікуди з методу не пішло
...
void setName(Mammal m)//m - посилання на об'єкт, а не його значення
{
m.name="Rabbit";
}
...
Mammal m=new Mammal;
m.name="Crow";
setName(m);//тепер m.name.equals("Rabbit")!
Саме тому, до речі, рядки порівнюються за допомогою методу equals - простий == порівнює посилання, тобто чи посилаються обидві змінні на один і той самий об'єкт.
---
*насправді я проігнорував таблицю віртуальних функцій, але зараз це взагалі підірве вам мозок
Насправді, досить топорний приклад як на навчальне завдання. Вас вимушують створити інтерфейс, наприклад:
interface Soundable {
void makeSound();
}
Який треба імплементувати Людиною та Папугою. Потім написати метод, що буде приймати об'єкт типу Soundable і викликати на ньому makeSound().
у вас повинна бути одна функція
make_speak(<Щось> speaker)
, що реалізується і для людини, і для папуги. Одна функція для двох об'єктів.
P.S. Підказка: об'єкти похідного класу також є об'єктами базового класу.
зробити клас в якому буде
public void make_speak(назва мого класу speaker)
{
обєкт на людину
обєкт на папугу
speaker.speak();
}
потім в головному класу визвати обєкт на цей клас? не розумію... або просто я цього ще не знаю...
Zolin_777 написав:хіба можна передавати параметру метода цілий об'єкт
Звісно, і навіть більше. Я вам зараз відкрию таємницю: коли ви пишете
object.method(parameter1,parameter2);
насправді* викликається
method(object,parameter1,parameter2);
Можна пруф? Цікаво.
Здається це не кейс для джави.
...але зараз це взагалі підірве вам мозок
Мені ця тема "Інтерфейс", більш схожа на гвалтування.
...а от ця строчка speaker.speak(); взагалі не в'яжиться нікуда....
По плану Speaker повинен бути класом щоб так визивати метод? нічого не розумію...
...але я не зрозумів як це працює, хіба можна передавати параметру метода цілий об'єкт?...
...але всеодно нічого в голову не приходить...
...не розумію... або просто я цього ще не знаю...
Шановний Zolin_777, навіщо Ви мучаєте себе, виберіть якусь одну книгу і послідовно читайте сторінку за сторінкою, не поспішаючи.
P.S. Підказка: об'єкти похідного класу також є об'єктами базового класу.
Це тут ні до чого, я спеціально написав, що у базовому класі має бути лише два методи void movers() та void voice().
Zolin_777
Якщо ви уже взялися вивчати інтерфейси, то беріть книгу та вивчайте. Бо послідовний перебір усіх можливих рядків коду дасть вам результат років через сто.
Для відправлення відповіді ви повинні увійти або зареєструватися