تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس السادس والعشرون - ال Interfaces
#3
كاتب المشاركة : أحمد جمال

Name Clashes

احياناً ما يقوم class او struct ما بعمل implements لاكثر من interface ، وربما يحدث مشاكل في تشابه الأسماء ، لنفترض المثال التالي :

C#:


كود :
public interface ICar
{
void move();
}
public interface ITruck
{
void move();
}
public class BMW: ITruck, ICar
{
}
vb.net:


كود :
Public Interface ICar
Sub move()
End Interface
Public Interface ITruck
Sub move()
End Interface
Public Class BMW
Implements ITruck
Implements ICar

End Class
ربما لن تجد مشكلة فيما لو قمت بعمل implementation للدالة move في الكلاس الجديد BMW :

C#:


كود :
public class BMW: ITruck, ICar
{
void move()
{
// do something.
}
}
vb.net:


كود :
Public Class BMW
Implements ITruck
Implements ICar

Private Sub move()
' do something.
End Sub
End Class
ولكن ماذا لو أردت عمل implementation للدالة move من car واخرى للدالة move من truck ، نقوم بذلك بالشكل التالي :

C#:


كود :
public class BMW: ITruck, ICar
{
void ICar.move()
{
// do something.
}
void ITruck.move()
{
// do something.
}
}
vb.net:


كود :
BMW ahmedCar=new BMW();
ICar temp= (ICar)ahmedCar;
temp.move();
وبعد عمل object من الكلاس BMW ، يمكن تحديد اي واحدة من الدالتين يتم استدعاءها بالشكل التالي :

C#:


كود :
Dim ahmedCar As New BMW()
Dim temp As ICar = DirectCast(ahmedCar, ICar)
temp.move()
vb.net:


كود :
Dim ahmedCar As New BMW()
Dim temp As ICar = DirectCast(ahmedCar, ICar)
temp.move()
}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
الدرس السادس والعشرون - ال Interfaces - بواسطة Raggi Tech - 14-10-12, 03:50 PM


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم