Chciałbym, żebyście mi napisali czy dobrze rozumiem idee interfejsów w C#.
Chodzi o to, że interfejs jest to po prostu jakby zbiór abstrakcyjnych składowych i jeżeli jakaś klasa go "dziedziczy" to musi zaimplementować jego metody.
Np:
Interfejs figura:
using System;
namespace Interfejsy_zabawa
{
interface IFigura
{
void ksztalt();
void rysuj();
}
interface IPunkty
{
byte SetPoints { get; }
}
}
Klasa prostokąt:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Interfejsy_zabawa
{
class Prostokat : IFigura
{
public void ksztalt()
{
Console.Write("Jestem prostokatem...");
}
public void rysuj()
{
Console.WriteLine("Rysuje prostokat...");
}
}
}
Klasa trójkąt:
using System;
namespace Interfejsy_zabawa
{
class Trojkat : IFigura, IPunkty
{
public void ksztalt()
{
Console.WriteLine("Jestem trójkątem...");
}
public void rysuj()
{
Console.WriteLine("Rysuję trójkąt...");
}
public byte SetPoints
{
get
{
return 3;
}
}
}
}
Program:
using System;
namespace Interfejsy_zabawa
{
class Program
{
static void Main(string[] args)
{
Prostokat p1 = new Prostokat();
p1.ksztalt();
p1.rysuj();
Console.WriteLine();
Trojkat t1 = new Trojkat();
t1.ksztalt();
t1.rysuj();
IPunkty pt2 = t1 as IPunkty;
IPunkty pt3 = p1 as IPunkty;
if (pt2 != null)
Console.WriteLine("Punkty: {0} ", pt2.SetPoints);
if (pt3 != null)
Console.WriteLine("Punkty: {0} ", pt2.SetPoints);
else
Console.WriteLine("Ten kształt nie posiada interfejsu IPunkty");
Console.ReadKey();
}
}
}
Jednak dalej nie rozumiem po co używać akurat interfejsów, skoro mogę używać abstrakcyjnych klas? Czym się to różni?