SlideShare a Scribd company logo
1 of 27
Вводный курс в Java
                        Занятие 2



Александр Русин
e-mail: alexander.rusin@simbirsoft.com
Android Developer
ООО СимбирСофт
Структура класса
//импорт пакетов
import java.util.*;
public class Sample {
    //метод класса
    public int method(int z) {
       return z;
    }
   //точка входа в программу
   public static void main(String[] args) {
      Sample s = new Sample();
      System.out.print(s.method(10));
  }
}
Элементы класса
public class Sample {
    private int x; // переменная экземпляра класса
    private int y = 0; // переменная экземпляра класса
    public final int CURRENT_YEAR = 2012; // константа
    protected static int bonus; // переменная класса
    static String version = "Java SE 7"; // переменная класса
    protected Calendar now;
    public int method(int z) {
        return z++;
    }
}
Модификаторы доступа

    private: члены класса доступны только
    внутри класса;

    default (package-private) (модификатор, по-
    умолчанию): члены класса видны внутри
    пакета (если класс будет так объявлен он
    будет доступен только внутри пакета);

    protected: члены класса доступны внутри
    пакета и в наследниках;

    public: члены класс доступны всем;
Модификаторы доступа

    static - ссылка этого поля у любого
    экземпляра класса будет ссылаться на одно
    и то же значение

    final – это модификатор, позволяющий
    объявлять константные поля в классе.
Конструкторы
public class Quest {
    // конструктор без параметров (по умолчанию)
    public Quest() {
          System.out.println("Вызван конструктор без параметров!!!");
    }
    // конструктор с параметрами
    public Quest(int idc, String txt) {
          super(); /* вызов конструктора супер класса явным образом
        необязателен, компилятор вставит его автоматически*/
         System.out.println("Вызван конструктор c параметрами!!!");
         System.out.println(id + " " + text);
    }
}
Порядок
    инициализации класса
1.Статические поля
2.Поля
3.Конструктор


Порядок описания полей и методов не
 оказывает влияния на порядок
 инициализации.
Порядок
          инициализации класса
public class Department {
    { System.out.println("logic"); };             //2
    static { System.out.println("static logic"); } //1
    private int id = 7;
    public Department(int d) {
        id = d;
        System.out.println("конструктор");        //3
    }
    int getId() { return id; }
    { id = 10; System.out.println("logic"); }      //2
}
Наследование
Важнейший механизм ООП, позволяющий
описать новый класс на основе уже
существующего

    При наследовании свойства и
    функциональность родительского класса
    наследуются новым классом

    Класс-наследник имеет доступ к публичным и
    защищённым методам и полям класса
    родительского класса

    Класс-наследник может добавлять свои данные
    и методы, а также переопределять методы
    базового класса
Терминология

    Родительский или базовый класс (класс-родитель) – класс,
    выступающий в качестве основы при наследовании

    Класс-потомок (дочерний класс, класс-наследник) – класс,
    образованный в результате наследования от родительского
    класса

    Иерархия наследования – отношения между родительским
    классом и его потомками

    Интерфейс класса – совокупность публичных методов
    класса, доступная для использования вне класса
    В интерфейсной части данные обычно не размещают

    Реализация класса – совокупность приватных методов и
    данных класса
Графическое
изображение иерархий
    наследования
         Животное           Родительский класс




  Рыба              Птица             Классы потомки




          Орёл               Голубь          Классы потомки
Перегрузка методов в
     классе наследнике
Методы производного класса замещает собой
 все методы родительского класса с тем же
 именем, количеством и типом аргументов.
Преимущества
    использования наследования

    Возможность создания новых типов,
    расширяя или используя функционал уже
    имеющихся

    Возможность существования нескольких
    реализаций одного и того же интерфейса

    Абстракция

    Полиморфизм
Инкапсуляция

    Понимается сокрытие информации о
    внутреннем устройстве объекта

    Работа с объектом может вестись только
    через его общедоступный (public)
    интерфейс.

    Другие объекты не должны вмешиваться в
    "дела" объекта, кроме как используя вызовы
    методов.
Инкапсуляция
public class Point {
    private final double x; //видимо только внутри класса
    private final double y;//видимо только внутри класса
    /** доступ к полю*/
    public double getX() {
        return x;
    }
    /** доступ к полю*/
    public double getY() {
        return y;
}
Абстракция
Абстра́кция (от лат. abstractio —
 «отвлечение») — отвлечение в процессе
 познания от несущественных сторон,
 свойств, связей предмета или явления с
 целью выделения их существенных,
 закономерных признаков.
Абстракция данных состоит в разделении
 несущественных деталей реализации
 подпрограммы и характеристик
 существенных для корректного её
 использования.
Абстрактный класс
public abstract class AbstractCourse {
    private String name;
    public AbstractCourse() {
    }
     public abstract void changeTeacher(int id);
    /*определение метода отсутствует */
    public void setName(String n) {
        name = n;
    }
}
Интерфейс
public interface IShape extends ILineGroup {
// int id; // ошибка, если нет инициализации
// void method(){} /* ошибка, так как абстрактный
   метод не может иметь тела!*/
    double getSquare(); // объявление метода
}
Интерфейс
Пример
public abstract class Triangle implements IShape {
    private double a, b, c;
    public Triangle(double a, double b, double c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
    public double getPerimeter() {
        return a + b + c;
    }
}
Полиморфизм

    Полиморфи́зм — возможность объектов с
    одинаковой спецификацией иметь
    различную реализацию.

    «Один интерфейс, множество реализаций»
Полиморфизм
Полиморфизм
public class Runner {
    public static void printFeatures(IShape f) {
        System.out.printf("название:%s площадь:%.2f периметр:
         %.2f%n", f.getName(), f.getSquare(), f.getPerimeter());
    }
    public static void main(String[] args) {
        Rectangle r = new Rectangle(5, 9.95);
        Circle c = new Circle(7.01);
        printFeatures(r);
        printFeatures(c);
    }
}
Полиморфизм
Результат выполнения кода


    название:Прямоугольник площадь:49,75
    периметр: 29,90

    название:Круг площадь:154,38 периметр:
    44,05
Домашняя работа
1 Создать класс Paiг (пара целых чисел); определить
 метод умножения на число и операцию сложения
 пар (a,b) + (c,d) = (а + b, с + d). Определить класс-
 наследник Money с полями: рубли и копейки.
 Переопределить операцию сложения и определить
 методы вычитания и деления денежных сумм.
2. Определить класс Pair с полями типа double.
  Реализовать операции сложения пар и умножения
  на число как в задании 1. Определить производный
  класс Complex и реализовать методы умножения
  (a, b) (с, d) = (ас - bd, ad + be) и вычитания (a, b) - (с,
  d) = (а - b, с - d ).
Литература

    http://ru.wikipedia.org/wiki/%D0%98%D0%BD
    %D0%B4%D0%B5%D0%BA%D1%81%D0%BD%D1%8B
    %D0%B9_%D0%BC
    %D0%B0%D1%81%D1%81%D0%B8%D0%B2 (определения)

    http://www.javable.com/tutorials/fesunov/lesson5/ (примеры)

    http://ru.wikibooks.org/wiki/Java

    http://ru.wikipedia.org/wiki/
    %D0%90%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%
    BA%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD
    %D0%BD%D1%8B%D1%85 (Абстракция)
Спасибо за внимание!

More Related Content

What's hot

C++ Базовый. Занятие 10.
C++ Базовый. Занятие 10.C++ Базовый. Занятие 10.
C++ Базовый. Занятие 10.Igor Shkulipa
 
C++ Базовый. Занятие 11.
C++ Базовый. Занятие 11.C++ Базовый. Занятие 11.
C++ Базовый. Занятие 11.Igor Shkulipa
 
C# Desktop. Занятие 04.
C# Desktop. Занятие 04.C# Desktop. Занятие 04.
C# Desktop. Занятие 04.Igor Shkulipa
 
C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.Igor Shkulipa
 
C++ осень 2013 лекция 5
C++ осень 2013 лекция 5C++ осень 2013 лекция 5
C++ осень 2013 лекция 5Technopark
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9Technopark
 

What's hot (6)

C++ Базовый. Занятие 10.
C++ Базовый. Занятие 10.C++ Базовый. Занятие 10.
C++ Базовый. Занятие 10.
 
C++ Базовый. Занятие 11.
C++ Базовый. Занятие 11.C++ Базовый. Занятие 11.
C++ Базовый. Занятие 11.
 
C# Desktop. Занятие 04.
C# Desktop. Занятие 04.C# Desktop. Занятие 04.
C# Desktop. Занятие 04.
 
C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.
 
C++ осень 2013 лекция 5
C++ осень 2013 лекция 5C++ осень 2013 лекция 5
C++ осень 2013 лекция 5
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9
 

Viewers also liked

Лекция 4
Лекция 4Лекция 4
Лекция 4itc73
 
Верстка_Лекция_3
Верстка_Лекция_3Верстка_Лекция_3
Верстка_Лекция_3itc73
 
Лекция 6
Лекция 6Лекция 6
Лекция 6itc73
 
Java Ahead-Of-Time compilation
Java Ahead-Of-Time compilationJava Ahead-Of-Time compilation
Java Ahead-Of-Time compilationNikita Lipsky
 
Java худеет. Спроси меня как.
Java худеет. Спроси меня как.Java худеет. Спроси меня как.
Java худеет. Спроси меня как.Nikita Lipsky
 
Секреты сборки мусора в Java
Секреты сборки мусора в JavaСекреты сборки мусора в Java
Секреты сборки мусора в Javaaragozin
 

Viewers also liked (6)

Лекция 4
Лекция 4Лекция 4
Лекция 4
 
Верстка_Лекция_3
Верстка_Лекция_3Верстка_Лекция_3
Верстка_Лекция_3
 
Лекция 6
Лекция 6Лекция 6
Лекция 6
 
Java Ahead-Of-Time compilation
Java Ahead-Of-Time compilationJava Ahead-Of-Time compilation
Java Ahead-Of-Time compilation
 
Java худеет. Спроси меня как.
Java худеет. Спроси меня как.Java худеет. Спроси меня как.
Java худеет. Спроси меня как.
 
Секреты сборки мусора в Java
Секреты сборки мусора в JavaСекреты сборки мусора в Java
Секреты сборки мусора в Java
 

Similar to Lec 2 Java

Java Core. Lecture# 3. Part# 1. Abstract classes.
Java Core. Lecture# 3. Part# 1. Abstract classes.Java Core. Lecture# 3. Part# 1. Abstract classes.
Java Core. Lecture# 3. Part# 1. Abstract classes.Anton Moiseenko
 
C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.Igor Shkulipa
 
C# Desktop. Занятие 06.
C# Desktop. Занятие 06.C# Desktop. Занятие 06.
C# Desktop. Занятие 06.Igor Shkulipa
 
особенности программирования на с++
особенности программирования на с++особенности программирования на с++
особенности программирования на с++mcroitor
 
C# Desktop. Занятие 07.
C# Desktop. Занятие 07.C# Desktop. Занятие 07.
C# Desktop. Занятие 07.Igor Shkulipa
 
C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.Igor Shkulipa
 
Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Anton Moiseenko
 
C++ осень 2012 лекция 2
C++ осень 2012 лекция 2C++ осень 2012 лекция 2
C++ осень 2012 лекция 2Technopark
 
3. java lecture classes
3. java lecture classes3. java lecture classes
3. java lecture classesMERA_school
 
паттерны программирования
паттерны программированияпаттерны программирования
паттерны программированияguestfc8ae0
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5Technopark
 
Oop java.generics
Oop java.genericsOop java.generics
Oop java.genericsmuqaddas_m
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4Technopark
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.Igor Shkulipa
 
наследование
наследованиенаследование
наследованиеmary110190
 

Similar to Lec 2 Java (20)

Java Core. Lecture# 3. Part# 1. Abstract classes.
Java Core. Lecture# 3. Part# 1. Abstract classes.Java Core. Lecture# 3. Part# 1. Abstract classes.
Java Core. Lecture# 3. Part# 1. Abstract classes.
 
C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.
 
Java. Classes.
Java. Classes.Java. Classes.
Java. Classes.
 
C# Desktop. Занятие 06.
C# Desktop. Занятие 06.C# Desktop. Занятие 06.
C# Desktop. Занятие 06.
 
особенности программирования на с++
особенности программирования на с++особенности программирования на с++
особенности программирования на с++
 
C# Desktop. Занятие 07.
C# Desktop. Занятие 07.C# Desktop. Занятие 07.
C# Desktop. Занятие 07.
 
C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.
 
Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.
 
C++ осень 2012 лекция 2
C++ осень 2012 лекция 2C++ осень 2012 лекция 2
C++ осень 2012 лекция 2
 
3. java lecture classes
3. java lecture classes3. java lecture classes
3. java lecture classes
 
Bytecode
BytecodeBytecode
Bytecode
 
паттерны программирования
паттерны программированияпаттерны программирования
паттерны программирования
 
Классы и объекты С#
Классы и объекты С#Классы и объекты С#
Классы и объекты С#
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
Oop java.generics
Oop java.genericsOop java.generics
Oop java.generics
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4
 
Step 3.2
Step 3.2Step 3.2
Step 3.2
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
 
наследование
наследованиенаследование
наследование
 
Lecture 4
Lecture 4Lecture 4
Lecture 4
 

More from itc73

Верстка лекция 4
Верстка лекция 4Верстка лекция 4
Верстка лекция 4itc73
 
Интегратор Bitrix 6 занятие
Интегратор Bitrix 6 занятиеИнтегратор Bitrix 6 занятие
Интегратор Bitrix 6 занятиеitc73
 
Интегратор Bitrix 6 занятие
Интегратор Bitrix 6 занятиеИнтегратор Bitrix 6 занятие
Интегратор Bitrix 6 занятиеitc73
 
Лекция 5
Лекция 5Лекция 5
Лекция 5itc73
 
Интегратор Bitrix 5 занятие
Интегратор Bitrix 5 занятиеИнтегратор Bitrix 5 занятие
Интегратор Bitrix 5 занятиеitc73
 
Интегратор Bitrix 4 занятие
Интегратор Bitrix 4 занятиеИнтегратор Bitrix 4 занятие
Интегратор Bitrix 4 занятиеitc73
 
Интегратор Bitrix продолжение
Интегратор Bitrix продолжениеИнтегратор Bitrix продолжение
Интегратор Bitrix продолжениеitc73
 
Верстка_Лекция1
Верстка_Лекция1Верстка_Лекция1
Верстка_Лекция1itc73
 
Верстка_Лекция_1
Верстка_Лекция_1Верстка_Лекция_1
Верстка_Лекция_1itc73
 
Верстка_Лекция_1
Верстка_Лекция_1Верстка_Лекция_1
Верстка_Лекция_1itc73
 
Верстка_Лекция2
Верстка_Лекция2Верстка_Лекция2
Верстка_Лекция2itc73
 
Present forms&css
Present forms&cssPresent forms&css
Present forms&cssitc73
 
Лекция_3
Лекция_3Лекция_3
Лекция_3itc73
 
Интегратор bitrix_ занятие 2
Интегратор bitrix_ занятие 2Интегратор bitrix_ занятие 2
Интегратор bitrix_ занятие 2itc73
 
Интегратор Bitrix_1
Интегратор Bitrix_1Интегратор Bitrix_1
Интегратор Bitrix_1itc73
 

More from itc73 (15)

Верстка лекция 4
Верстка лекция 4Верстка лекция 4
Верстка лекция 4
 
Интегратор Bitrix 6 занятие
Интегратор Bitrix 6 занятиеИнтегратор Bitrix 6 занятие
Интегратор Bitrix 6 занятие
 
Интегратор Bitrix 6 занятие
Интегратор Bitrix 6 занятиеИнтегратор Bitrix 6 занятие
Интегратор Bitrix 6 занятие
 
Лекция 5
Лекция 5Лекция 5
Лекция 5
 
Интегратор Bitrix 5 занятие
Интегратор Bitrix 5 занятиеИнтегратор Bitrix 5 занятие
Интегратор Bitrix 5 занятие
 
Интегратор Bitrix 4 занятие
Интегратор Bitrix 4 занятиеИнтегратор Bitrix 4 занятие
Интегратор Bitrix 4 занятие
 
Интегратор Bitrix продолжение
Интегратор Bitrix продолжениеИнтегратор Bitrix продолжение
Интегратор Bitrix продолжение
 
Верстка_Лекция1
Верстка_Лекция1Верстка_Лекция1
Верстка_Лекция1
 
Верстка_Лекция_1
Верстка_Лекция_1Верстка_Лекция_1
Верстка_Лекция_1
 
Верстка_Лекция_1
Верстка_Лекция_1Верстка_Лекция_1
Верстка_Лекция_1
 
Верстка_Лекция2
Верстка_Лекция2Верстка_Лекция2
Верстка_Лекция2
 
Present forms&css
Present forms&cssPresent forms&css
Present forms&css
 
Лекция_3
Лекция_3Лекция_3
Лекция_3
 
Интегратор bitrix_ занятие 2
Интегратор bitrix_ занятие 2Интегратор bitrix_ занятие 2
Интегратор bitrix_ занятие 2
 
Интегратор Bitrix_1
Интегратор Bitrix_1Интегратор Bitrix_1
Интегратор Bitrix_1
 

Lec 2 Java

  • 1. Вводный курс в Java Занятие 2 Александр Русин e-mail: alexander.rusin@simbirsoft.com Android Developer ООО СимбирСофт
  • 2. Структура класса //импорт пакетов import java.util.*; public class Sample { //метод класса public int method(int z) { return z; } //точка входа в программу public static void main(String[] args) { Sample s = new Sample(); System.out.print(s.method(10)); } }
  • 3. Элементы класса public class Sample { private int x; // переменная экземпляра класса private int y = 0; // переменная экземпляра класса public final int CURRENT_YEAR = 2012; // константа protected static int bonus; // переменная класса static String version = "Java SE 7"; // переменная класса protected Calendar now; public int method(int z) { return z++; } }
  • 4. Модификаторы доступа  private: члены класса доступны только внутри класса;  default (package-private) (модификатор, по- умолчанию): члены класса видны внутри пакета (если класс будет так объявлен он будет доступен только внутри пакета);  protected: члены класса доступны внутри пакета и в наследниках;  public: члены класс доступны всем;
  • 5. Модификаторы доступа  static - ссылка этого поля у любого экземпляра класса будет ссылаться на одно и то же значение  final – это модификатор, позволяющий объявлять константные поля в классе.
  • 6. Конструкторы public class Quest { // конструктор без параметров (по умолчанию) public Quest() { System.out.println("Вызван конструктор без параметров!!!"); } // конструктор с параметрами public Quest(int idc, String txt) { super(); /* вызов конструктора супер класса явным образом необязателен, компилятор вставит его автоматически*/ System.out.println("Вызван конструктор c параметрами!!!"); System.out.println(id + " " + text); } }
  • 7. Порядок инициализации класса 1.Статические поля 2.Поля 3.Конструктор Порядок описания полей и методов не оказывает влияния на порядок инициализации.
  • 8. Порядок инициализации класса public class Department { { System.out.println("logic"); }; //2 static { System.out.println("static logic"); } //1 private int id = 7; public Department(int d) { id = d; System.out.println("конструктор"); //3 } int getId() { return id; } { id = 10; System.out.println("logic"); } //2 }
  • 9. Наследование Важнейший механизм ООП, позволяющий описать новый класс на основе уже существующего  При наследовании свойства и функциональность родительского класса наследуются новым классом  Класс-наследник имеет доступ к публичным и защищённым методам и полям класса родительского класса  Класс-наследник может добавлять свои данные и методы, а также переопределять методы базового класса
  • 10. Терминология  Родительский или базовый класс (класс-родитель) – класс, выступающий в качестве основы при наследовании  Класс-потомок (дочерний класс, класс-наследник) – класс, образованный в результате наследования от родительского класса  Иерархия наследования – отношения между родительским классом и его потомками  Интерфейс класса – совокупность публичных методов класса, доступная для использования вне класса В интерфейсной части данные обычно не размещают  Реализация класса – совокупность приватных методов и данных класса
  • 11. Графическое изображение иерархий наследования Животное Родительский класс Рыба Птица Классы потомки Орёл Голубь Классы потомки
  • 12. Перегрузка методов в классе наследнике Методы производного класса замещает собой все методы родительского класса с тем же именем, количеством и типом аргументов.
  • 13. Преимущества использования наследования  Возможность создания новых типов, расширяя или используя функционал уже имеющихся  Возможность существования нескольких реализаций одного и того же интерфейса  Абстракция  Полиморфизм
  • 14. Инкапсуляция  Понимается сокрытие информации о внутреннем устройстве объекта  Работа с объектом может вестись только через его общедоступный (public) интерфейс.  Другие объекты не должны вмешиваться в "дела" объекта, кроме как используя вызовы методов.
  • 15. Инкапсуляция public class Point { private final double x; //видимо только внутри класса private final double y;//видимо только внутри класса /** доступ к полю*/ public double getX() { return x; } /** доступ к полю*/ public double getY() { return y; }
  • 16. Абстракция Абстра́кция (от лат. abstractio — «отвлечение») — отвлечение в процессе познания от несущественных сторон, свойств, связей предмета или явления с целью выделения их существенных, закономерных признаков. Абстракция данных состоит в разделении несущественных деталей реализации подпрограммы и характеристик существенных для корректного её использования.
  • 17. Абстрактный класс public abstract class AbstractCourse { private String name; public AbstractCourse() { } public abstract void changeTeacher(int id); /*определение метода отсутствует */ public void setName(String n) { name = n; } }
  • 18. Интерфейс public interface IShape extends ILineGroup { // int id; // ошибка, если нет инициализации // void method(){} /* ошибка, так как абстрактный метод не может иметь тела!*/ double getSquare(); // объявление метода }
  • 20. Пример public abstract class Triangle implements IShape { private double a, b, c; public Triangle(double a, double b, double c) { this.a = a; this.b = b; this.c = c; } public double getPerimeter() { return a + b + c; } }
  • 21. Полиморфизм  Полиморфи́зм — возможность объектов с одинаковой спецификацией иметь различную реализацию.  «Один интерфейс, множество реализаций»
  • 23. Полиморфизм public class Runner { public static void printFeatures(IShape f) { System.out.printf("название:%s площадь:%.2f периметр: %.2f%n", f.getName(), f.getSquare(), f.getPerimeter()); } public static void main(String[] args) { Rectangle r = new Rectangle(5, 9.95); Circle c = new Circle(7.01); printFeatures(r); printFeatures(c); } }
  • 24. Полиморфизм Результат выполнения кода  название:Прямоугольник площадь:49,75 периметр: 29,90  название:Круг площадь:154,38 периметр: 44,05
  • 25. Домашняя работа 1 Создать класс Paiг (пара целых чисел); определить метод умножения на число и операцию сложения пар (a,b) + (c,d) = (а + b, с + d). Определить класс- наследник Money с полями: рубли и копейки. Переопределить операцию сложения и определить методы вычитания и деления денежных сумм. 2. Определить класс Pair с полями типа double. Реализовать операции сложения пар и умножения на число как в задании 1. Определить производный класс Complex и реализовать методы умножения (a, b) (с, d) = (ас - bd, ad + be) и вычитания (a, b) - (с, d) = (а - b, с - d ).
  • 26. Литература  http://ru.wikipedia.org/wiki/%D0%98%D0%BD %D0%B4%D0%B5%D0%BA%D1%81%D0%BD%D1%8B %D0%B9_%D0%BC %D0%B0%D1%81%D1%81%D0%B8%D0%B2 (определения)  http://www.javable.com/tutorials/fesunov/lesson5/ (примеры)  http://ru.wikibooks.org/wiki/Java  http://ru.wikipedia.org/wiki/ %D0%90%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0% BA%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD %D0%BD%D1%8B%D1%85 (Абстракция)