Мы помогаем ИТ-компаниям оптимально настроить процессы менеджмента и разработки

Найти

(067) 536-87-70

(095) 492-65-67

 

Принципы ООП. Наследование

25.09.19

Возьмите чашечку кофе и садитесь поудобнее, сегодня мы поговорим про принципы объектно-ориентированного программирования в Java.

В статье про классы и методы было показано как создать некоторый класс и метод. Может быть класс без методов, но не метод без класса!

Для описания первого принципа давайте представим, что у нас есть класс Animals. У животных может быть цвет, размер и т.д. Но, что если нам нужен класс Cat с теми же полями, и возможно методами?

Наследование - способность получать свойства и поведение
(поля и методы) от предка.

cclass Animals {
       String color;
       double size = 1.0;//default normal size 1
}
class Cat extends Animals {// extends ключевое слово для наследования
}
public class Main {
       public static void main(String args[]) {
            Cat cat = new Cat ();
            System.out.println(cat.size);//1.0
       }
}

Мы унаследовали поля, не написав ни строчки кода в классе Cat, использовали их. Но будьте осторожны! У полей стоят модификаторы доступа default, и поэтому они будут доступны для Cat . Также будет и для методов. 

В предыдущем случае у нас Cat является Animals (is-a). В этому случае можно расширять класс Animals используя наследование. Однако могут быть случаи, когда у нас отношение между объектами has-a, то есть один объект имеет переменную другого (композиция).

class Cat {
      private Clew favoriteClew;
      public void getClewColor() {
             favoriteClew = new Clew (“Red”);
             System.out.println(“Cat favorite clew color is: ” + favoriteClew.getColor());
      }
}
class Clew {
     private String color;
     public Clew (String color) {
            this.color = color;
     }
     public String getColor() {
            return color;
     }
}
public class Main {
     public static void main(String args[]) {
       Cat cat= new Cat ();
       cat.getClewColor();//Cat favorite clew color is: Red
     }
}

В этом примере мы переиспользовали имеющийся код у класса Clew без наследования, а при помощи вызова метода getColor у Clew для наших целей. 

А пока котик играется с клубочком стоит попрактиковаться используя изученный материал в ожидании следующей статьи!

кот

 

Автор

photo
Сергей Посьмашный
Java blogger, физик, путешественник