Что скрывается за понятием сlass в ООП? Здравствуйте. Скажите, пожалуйста, правильно ли я понимаю понятие класса в ООП? Я понял это так: Напрямую с классом работать мы не можем, поэтому мы работаем с экземплярами класса (то есть с его объектами), которые в свою очередь имеют свойства, события и методы. У каждого объекта есть свой интерфейс который в свою очередь определяет какие запросы мы можем послать к этому объекту. Но напрямую с объектом мы тоже не можем работать поэтому даём нашему объекту имя (то есть делаем на него ссылку указывая что созданное нами имя и есть тот самый объект). Непосредственно объект мы изменять не можем поэтому мы через оператор new создаём новый экземпляр этого объекта. С которым можем уже производить какие то действия. Light lt = new Light() lt on(); Как я понимаю на примере этого кода. Мы имеем объект OnClickListener с которым напрямую мы работать не можем. Поэтому мы даём этому объекту имя (то есть делаем ссылку на объект), в нашем случае это btnOK. Для того чтобы нам работать с btnOK мы должны создать экземпляр этого объекта, который в свою очередь мы сможем изменять (то есть который сможет реагировать на наши запросы). У объекта OnClickListener существует событие onClick, которое срабатывает при нажатии на кнопку. У объекта tvOut есть событие setText, которое выводит необходимый нам текст. OnClickListener btnOK = new OnClickListener() { @Override public void onClick(View v) { // Меняем текст в TextView (tvOut) tvOut.setText("Нажата кнопка ОК"); } }; Так это понимаю я, но ведь OnClickListener - это не объект а метод. Причём тут его называют событием А тут методом. public void butHello_Click(View v){ TextView tvHello = (TextView)findViewById(R.id.textView1); tvHello.setText("Hello!!!"); } В чём же тут разница? Просьба не ругаться, а помочь разобраться, в чём моя ошибка. Мне необходимо это понять, желательно на примерах. Спасибо за помощь.
В ООП класс - это шаблон или описание объекта, который определяет его свойства (поля), методы (действия) и события (обработчики событий). Когда мы создаем экземпляр класса, то получаем объект, который уже имеет определенные свойства и поведение, определенное в классе.
Теперь касательно вашего примера с OnClickListener. OnClickListener в Android - это интерфейс, который представляет обработчик событий нажатия на кнопку. Вы создаете анонимный класс, реализующий интерфейс OnClickListener, и внутри этого класса определяете метод onClick, который будет исполнен при нажатии на кнопку. Таким образом, вы объявляете и определяете обработчик события через анонимный класс.
В вашем втором примере, при использовании атрибута android:onClick в XML разметке, вы указываете название метода, который будет вызван при нажатии на кнопку. Метод butHello_Click в данном случае должен быть объявлен в коде активности и иметь определенную сигнатуру, принимая на вход View объект. Таким образом, вы привязываете метод к обработке события нажатия на кнопку.
Таким образом, в обоих случаях вы определяете обработчик события нажатия на кнопку, однако в первом случае вы делаете это через анонимный класс, реализующий интерфейс, а во втором случае вы привязываете метод к событию напрямую.
Надеюсь, это поможет вам лучше понять разницу между данными двумя подходами. Если у вас остались вопросы - обращайтесь.
Здравствуйте! Давайте разберем ваш вопрос.
В ООП класс - это шаблон или описание объекта, который определяет его свойства (поля), методы (действия) и события (обработчики событий). Когда мы создаем экземпляр класса, то получаем объект, который уже имеет определенные свойства и поведение, определенное в классе.
Теперь касательно вашего примера с OnClickListener. OnClickListener в Android - это интерфейс, который представляет обработчик событий нажатия на кнопку. Вы создаете анонимный класс, реализующий интерфейс OnClickListener, и внутри этого класса определяете метод onClick, который будет исполнен при нажатии на кнопку. Таким образом, вы объявляете и определяете обработчик события через анонимный класс.
В вашем втором примере, при использовании атрибута android:onClick в XML разметке, вы указываете название метода, который будет вызван при нажатии на кнопку. Метод butHello_Click в данном случае должен быть объявлен в коде активности и иметь определенную сигнатуру, принимая на вход View объект. Таким образом, вы привязываете метод к обработке события нажатия на кнопку.
Таким образом, в обоих случаях вы определяете обработчик события нажатия на кнопку, однако в первом случае вы делаете это через анонимный класс, реализующий интерфейс, а во втором случае вы привязываете метод к событию напрямую.
Надеюсь, это поможет вам лучше понять разницу между данными двумя подходами. Если у вас остались вопросы - обращайтесь.