#21 - Абстрактные классы, методы и свойства

#21 - Абстрактные классы, методы и свойства

Абстрактные классы это достаточно необычный тип классов, который существует в объектно ориентированном программировании. За урок мы научимся прописывать абстрактные классы, а также работать с ними в языке C#.

Видеоурок

Абстрактные классы очень схожи с обычными классами в Java. Единственное отличие заключаются в том, что абстрактный класс ничего не реализует. Внутри него можно лишь указать все методы и поля, которые необходимо реализовывать во всех классах наследниках. 


Для создания абстрактного классов используется ключевое слово abstract:

abstract class Person {
	public abstract float getHeight();
	public abstract string getName();
}

В абстрактном классе можно создать методы как в интерфейсах или же можно прописать абстрактные методы, что ничего из себя не представляют. Для создания абстрактного метода используйте ключевое слово abstract перед указанием типа данных.


Классы наследники от абстрактного класса должны реализовывать все методы абстрактного класса, иначе компилятор будет выдавать ошибки. 


Подобные классы полезны, ведь можно указать лишь общий функционал, что должен присутствовать во всех классах наследниках, но при этом какая именно будет реализация нам не известно.

Исходный код

Скрипт
using System;
using System.Collections.Generic;

namespace ProjectOne {

	abstract class Animal {
		public abstract void Print ();
		
	}

	class Dog : Animal {

		private float speed;

		public Dog (float speed) {
			this.speed = speed;
		}

		public override void Print () {
			Console.WriteLine ("Dog speed: " + speed);
		}
	}

	class Cat : Animal {

		private float speed;

		public Cat (float speed) {
			this.speed = speed;
		}

		public override void Print () {
			Console.WriteLine ("Cat speed: " + speed);
		}
	}

	class MainClass {
		
		public static void Main (string[] args) {			

			List<Animal> animals = new List<Animal> ();
			animals.Add (new Dog (12.23f));
			animals.Add (new Dog (12.3f));
			animals.Add (new Cat (12.3f));

			foreach (Animal animal in animals) {
				animal.Print ();
			}

			Console.ReadKey ();
		}
	}
}

Онлайн редактор кода

Загрузка...

Задание к уроку

Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям

Большое задание по курсу

Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца

Также стоит посмотреть

Программа на C# .NET Windows Forms
7 уроков
Изучение C#, ASP.NET и создание Windows программ
Уроки C# под Unity 5 для начинающих
9 уроков
Изучение ASP.NET Core MVC. Создание сайтов на C#
10 уроков
Комментарии для сайта Cackle