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

Объекты

Почти весь код, написанный на языке 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).


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

#7. Вводный курс по JAVA. Объекты, конструкторы обновлено: Март 12, 2016 автором: admin

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

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

  7. какая разница ноль/неноль переменная ? условия излишни, надо сразу делить

  8. Не понял реализацию метода

    Point center(Point other) {
    // Возвращает центр между этой и другой точками
    // Заметьте, мы используем целое число, поэтому не получим точное значение
    return new Point((x + other.x) / 2, (y + other.y) / 2);
    }

    что за «другая» точка, как изначально задать её координаты и как его проверить результат?

  9. Victor on 19.02.2016

    Не понял реализацию метода

    Point center(Point other) {

    // Возвращает центр между этой и другой точками

    // Заметьте, мы используем целое число, поэтому не получим точное значение

    return new Point((x + other.x) / 2, (y + other.y) / 2);

    }

    что за «другая» точка, как изначально задать её координаты и как его проверить результат?

    если попытаться написать все это на практике то станет понятнее. но тоже поломал голову оказывается все по хитрому (для новичка): при вызове метода center мы будем писать чтото вроде point1.center(point2) вот и две точки. результатом будет третья.

  10. При всём уважении, делаете доброе дело, но всё есть моменты не совсем положительные… К выше написанномуБ о том что вы многие моменты не объяснете а просто проговоариваете или молча пиште, хотелось бы что б вы комментировали сложные места или вообще не известные и показывали результат (выведенный итог) который у вас получился и результат (итоговый) заданий. Спасибо

  11. public class Point {
    int x; //Начальная координата Х (если начальная координата не (0;0);
    int y; //Начальная координата У (если начальная координата не (0;0);
    int x1; //Конечная координата Х;
    int y1; //Конечная координата У;

    public String Scale(){
    String s = «;»;
    String Scale = ((x1 + x)/2+s+(y1 + y)/2);
    return Scale;
    }
    public void nachaloScale (int x, int y) {
    this.x = x;
    this.y = y;
    }
    public void konesScale (int x1, int y1){
    this.x1 = x1;
    this.y1 = y1;
    }
    }
    ——————————-
    public class Main {
    public static void main(String[] args) {
    Point p = new Point();
    p.nachaloScale(0,0);
    p.konesScale (8,4);
    String KOO = p.Scale();
    System.out.println(«Seredina: » + KOO);
    }
    }

  12. //Point.java

    public class Point {

    private double x;
    private double y;

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

    public void printCoordinates() {
    //метод выводит координаты точки
    System.out.println((this.x) + » » + (this.y));
    }

    public void scale() {
    //метод уменьшает каждую координату точки в два раза
    this.x = this.x / 2;
    this.y = this.y / 2;
    }
    }

    //Main.java

    public class Main {

    public static void main(String[] args) {

    Point firstPoint = new Point(24.2, 48.6);
    //строка создаёт новую точку firstPoint

    firstPoint.scale();
    //делаем точку наполовину ближе к началу координат»

    firstPoint.printCoordinates();
    //выводим результат

    }
    }

  13. public class Point {
    private int x;
    private int y;

    public 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 class Main {

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

    }
    }

  14. Я сделал вот так:
    public class Student{
    public String name, soname, family;
    public String printFullName(){
    return "Фамилия Имя Отчество: " + (family + " " + name +" "+ soname);
    }
    }

    public class Main {
    public static void main(String[] args) {
    Student a = new Student();
    a.name = "Имя";
    a.soname = "Отчество";
    a.family = "Фамилия";
    System.out.println(a.printFullName());
    }
    }

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
*
Website