#7. Вводный курс по JAVA. Объекты, конструкторы

<<Предыдущий урок   Список уроков   Следующий урок>>

Объекты

Почти весь код, написанный на языке Java — это классы и объекты, т.к. java — объектно ориентированный язык. Java-объекты хранят свое состояние в переменных, эти  переменные еще называют полями или членами экземпляра класса. Больше об объектах читайте по ссылке: Создание собственных классов в Java (продолжение), класс Object

Давайте начнем с примера:

Этот класс определяет точку с координатами X и Y.

Для того, чтобы создать экземпляр этого класса, мы должны использовать ключевое слово new.

При этом используется так называемый конструктор по умолчанию (или конструктор без параметров) — это специальный метод класса, мы его не определяли явно, но даже если его не определить, он создаётся автоматически, выполняется при создании каждого нового объекта и присваивает первоначальные значения его свойствам (инициализирует их).

От методов в java конструктор отличается тем, что имеет то же самое имя, что и класс, в котором он определен, а также не имеет типа возвращаемого значения. Конструктор в java возвращает новый объект — экземпляр родительского класса). Больше о конструкторах читайте по ссылке: Создание собственных классов в Java: свойства, методы, конструкторы

Мы можем определить наш собственный конструктор. Поскольку методы можно перегружать, а конструктор является методом, то с помощью перегрузки можно создать дополнительные варианты конструкторов. Например, удобно иметь конструктор, который позволит при создании объекта Point явно указывать его координаты:

Это означает, что мы не можем больше использовать конструктор по умолчанию new Point(). Теперь мы можем пользоваться только перегруженным конструктором  с указанием начальных значений new Point(4, 1).

Мы можете определить более чем один конструктор, так что объект класса Point может быть создан несколькими способами. Давайте создадим еще один перегруженный конструктор:

Обратите внимание на ключевое слово this. Мы можем использовать его внутри конструктора для вызова другого конструктора (для того, чтобы избежать дублирования кода).

Мы также используем ключевое слово this в качестве ссылки на текущий объект.

После того, как мы определили объект р мы можем получить доступ к X и Y.

Методы

Теперь мы можем определить методы класса Point.

Public и Private

На прошлом уроке мы уже рассматривали модификаторы доступа. Ключевое слово private перед переменной или методом  означает, что только сам класс может получить доступ к переменной или методу, а когда мы используем public это значит, что любой объект может получить к нему доступ. Конструкторы обычно определяют как public, переменные определяют как private, а методы разделяются, некоторые public, а некоторые private, в зависимости от задач. Подробнее о модификаторах доступа читайте по ссылке: Создание собственных классов в Java (продолжение), инкапсуляция, полиморфизм, модификаторы доступа

Упражнение

Напишите новый метод класса Point с названием scale, который сделает точку наполовину ближе к началу координат (0,0). Например, точка с координатами (8, 4) после выполнения метода  scale будет иметь координаты (4, 2).

Дополнительное чтение:


<<Предыдущий урок   Список уроков   Следующий урок>>

Комментариев: 23
  1. тип того вышло, но у меня работает:
    public void scale (){
    if (x != 0 && y != 0){
    x = x/2;
    y = y/2;
    /*если ни одна из координат не 0 */
    }
    else if ( x == 0 ){
    y = y / 2;
    /* если х = 0, исключение деления на 0*/
    }
    else if ( y == 0){
    x = x / 2;
    /* если у = 0, исключение деления на 0*/
    }
    }

  2. Lain

    Константин Волегов on 06.07.2015, в каком месте там деление на ноль?

  3. public void scale(int x, int y){
    this.x=x/2;
    this.y=y/2;

    }

  4. Надеюсь правильно:

    public class Point {
    int x;
    int y;

    Point(int x, int y){
    this.x=x;
    this.y=y;
    }

    public void Scale() {
    this.x=x/2;
    this.y=y/2;
    System.out.println(x+» «+y);
    }

    public static void main(String[] args) {
    Point a = new Point(8,4);
    a.Scale();

    }
    }

  5. Nikolay

    Ваши уроки крайне не подробны и вызывают лишь недопонимание. Вы не объясняете то, что написано в вашем коде, вы просто это проговаривайте. Допустим про «new» вы не сказали совершенно ничего, зачем это нужно и для чего. Я советую вам ваши уроки переснять и большую часть перенести на текст. Люди, смотрящие эти уроки никогда не купят у вас ваши платные курсы.

  6. admin (автор)

    Спасибо за критику. Обязательно учтем Ваши пожелания к урокам.
    Вы помогаете нам становиться лучше)

  7. программа что то должна выдавать ?

Добавить комментарий