Вниз  Android-программирование (1-ые посты)
- 21.02.2015 / 10:56
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Naik, во всех современных IDE есть показ переопределенных методов
swank, и что я должен там увидеть? :-D
- 1.03.2015 / 21:58
Nevesel
  Пользователь

Nevesel 
Сейчас: Offline
Привет всем форумчанам! Не могу понять одну вещь, помогите кто знает- в учебнике Цехнера написаны классы интерфейсов- Game, Graphics и т.д. Они маленькие, в них практически только названия методов, и всë, например вот часть интерфейса Screen
  <code>
package nevesel.a.framework;
public abstract class Screen
...
public abstract void pause();
public abstract void resume();
</code>
или
<code>
package nevesel.a.framework;
public interface Game
...
public Screen getCurrentScreen();
public Screen getStartScreen();
</code>

В чëм проблема- не понимаю, ведь это пустые методы, как они могут что-то делать? Ведь интерфейс я пишу сам! Или это стандартные методы, лишь объявленные мной, а их тело уже прописано где-то?

Изменено Nevesel (1.03 / 22:04) (всего 2 раза)
- 1.03.2015 / 22:58
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Nevesel, ООП немного подучи. В частности раздел с абстрактными классами и интерфейсами.
Но если вкратце, то эти методы просто описывают "интерфейс" для взаимодействия с объектом. На самом же деле при вызове будет выполняться метод из класса-наследника, реализующего данный метод.
__________________
 let live
- 2.03.2015 / 01:14
Ксакеп
  Модератор форума

Ксакеп 
Сейчас: Offline
Nevesel, оба класса — abstract, абстрактные. Они просто описывают набор методов, иногда без конкретной реализации. Например, можно заиметь абстрактный класс Bird, который имеет реализацию sayWord() (чик-чирик), но не имеет конкретной реализации метода getSize(), который должен возвращать размер птицы.

Очевидно, нельзя создать конкретный экземпляр класса Bird, так как не определён метод getSize(). Зачем вообще тогда нужны абстрактные классы?

Скажем, ты можешь создать конкретную реализацию класса Bird, например, BigBird, или SmallBird. Оба этих класса наследуют класс Bird и реализуют getSize().

Тогда можно работать с переменной типа Bird, которая на самом деле является либо BigBird, либо SmallBird.

  1. class BigBird extends Bird {...}
  2.  
  3. {
  4. Bird kesha = new SmallBird();
  5. kesha.getSize(); // small
  6.  
  7. // Проходит время
  8. kesha = new BigBird();
  9. kesha.getSize();
  10. }

Можно так писать, потому что и BigBird, и SmallBird содержат метод getSize и являются наследниками Bird.

Зачем? Один программист описывает интерфейс — набор методов, которые нужны для работы. А другой программист пилит конкретные реализации, так что можно заменить одну реализацию (BigBird) на другую (SmallBird) и всё будет работать.
- 2.03.2015 / 23:03
Nevesel
  Пользователь

Nevesel 
Сейчас: Offline
aNNiMON, Ксакеп, спасибо за ответ, прям на пальцах всë разъяснили.
И всë-таки, мне кажется, вызывать метод абстрактного класса или интерфейса( который потом всë равно вызывает соответствующий метод из класса наследника) несколько странно- ведь проще сразу вызвать этот метод тут же? Зачем лишний раз куда-то обращаться?

Изменено Nevesel (2.03 / 23:03) (всего 1 раз)
- 2.03.2015 / 23:33
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Nevesel, например, если ты перебираещь набор вида ArrayList<Bird> куда включены экземпляры обоих вариантов
- 4.03.2015 / 14:48
Naik
  Пользователь

Naik 
Сейчас: Offline
Nevesel, чтобы не зависеть от конкретного класса, а использовать его интерфейсы
- 8.03.2015 / 10:10
eNvisible
  Пользователь

eNvisible 
Сейчас: Offline
Помогите пожалуйста. Как проверить столкновение двук окружностей? Я теоритически представляю, что нужны координаты точки(цента) X, Y и R - радиус. Расстояние между радиусами окружности и даёт столкновение. Но вот как это в коде выразить? В векторах не шарю( Как проще это сделать?
- 8.03.2015 / 11:15
ДубоХирург
  Пользователь

ДубоХирург 
Сейчас: Offline
eNvisible, координаты обоих центров есть?
Если да, то столкновение будет, если расстояние между центрами меньше или равно сумме радиусов
- 8.03.2015 / 11:19
eNvisible
  Пользователь

eNvisible 
Сейчас: Offline
ДубоХирург, Это я понимаю. А как в коде это выглядеть будет? Сама проверка...
Наверх  Всего сообщений: 4453
Фильтровать сообщения
Поиск по теме
Файлы топика (184)