আমরা , আজকে এক্সপ্লিসিট ইন্টারফেইস ইমপ্লিমেন্টেশন নিয়ে কথা বলবো ।।
ধরো , তুমি দুইটি ইন্টারফেইস ক্রিয়েট করেছো ।। যাদের ঠিক একই নামের দুইটি মেথোড ডিক্লেয়ার করা হয়েছে ।। তারপর , তুমি একটা ক্লাস ক্রিয়েট করলে ,যেই ক্লাস একই সাথে সেই দুইটা ইন্টারফেইস থেকে ডেরাইভড হয়েছে ।। এখন কি কি ধরনের ঘটনা ঘটতে পারে ???
using System;
interface Iin
{
void print();
}
interface Iin2
{
void print();
}
public class cl:Iin,Iin2
{
public void print()
{
Console.WriteLine("Hey Trainer");
}
}
public class Program
{
public static void Main()
{
cl u = new cl();
u.print();
Console.ReadKey();
}
}
উপরের কোড রান করাও , কোনো এরর পাবেও না ।। বাট , একটা জিনিস খেয়াল করো যে --আমাদের দুইটা ইন্টারফেইস-এরই মেথোড ইমপ্লিমেন্টেশন করা লাগতো ।। বাট , আমি কিন্তু ক্লাসে একটা মেথোড ইমপ্লিমেন্টেশন করেছি । কিন্তু , আমায় কোনো এরর দেখায় নি , কারণ দুইটা ইন্টারফেইসেরই মেথোড নেইম একই ।। এটা না হয় , হলো - কিন্তু, আমাদের কন্সল স্ক্রিনে যে আউটপুট'টা দেখলাম সেটা আসলে কোন ইন্টারফেইস এর মেথোডের ???? বলতে পারবা ???
জানি , পারবে না ।।
আমি যদি বলি , দুইটা আলাদা আলাদা ইন্টারফেইস এর জন্য আলাদা আলাদা জিনিস আউটপুটে দেখাবো , তাহলে কি করতে হবে ?? বলো তো ----------------
using System;
interface Iin
{
void print();
}
interface Iin2
{
void print();
}
public class c1:Iin,Iin2
{
// Explicit Interface Implementation
void Iin.print()
{
Console.WriteLine("Hey First Interface Trainer");
}
//Explicit Interface Implementation
void Iin2.print()
{
Console.WriteLine("Hey Second Interface Trainer");
}
}
public class Program
{
public static void Main()
{
Iin u = new c1();
Iin2 y = new c1();
u.print();
y.print();
Console.ReadKey();
}
}
তাহলে , আমরা বুঝতে পারলাম - কিভাবে Explicit Interface Implementation আসলে কি ???? এবং এটাকে কিভাবে ইমপ্লিমেন্ট করতে হয় ?? আরেকটা কথা আমাদের মনে রাখতে হবে , এই ক্ষেত্রে মেথোড ইমপ্লিমেন্ট করবার সময় কখনোই অ্যাকসেস মোডিফায়ার হিসেবে public / private etc. ইউজ করা যাবে না ।। আমরা , মেইন মেথোডের ভেতরে আলাদা আলাদা ইন্টারফেইসের জন্য আলাদা আলাদা রেফারেন্স ভ্যারিয়েবল ক্রিয়েট করেছি ।। আমরা টাইপ ক্যাস্টিং এর মাধ্যমেও এটা করতে পারি , চলো দেখে আসি ---------------------------
using System;
interface Iin
{
void print();
}
interface Iin2
{
void print();
}
public class c1:Iin,Iin2
{
void Iin.print()
{
Console.WriteLine("Hey First Interface Trainer");
}
void Iin2.print()
{
Console.WriteLine("Hey Second Interface Trainer");
}
}
public class Program
{
public static void Main()
{
c1 u = new c1();
c1 y = new c1();
((Iin)u).print();
((Iin2)y).print();
Console.ReadKey();
}
}
Explicit Interface Implementation করবার পর , তুমি যদি আবার মেইন মেথোডে c1.print(); এরকম লিখে ফেলো , তাহলে কিন্তু হবে না ।। কারণ , Explicit Interface Implementation করে ফেলেছো , সুতরাং এখন আর তোমার ওইভাবে কল করা যাবে না ।।
আচ্ছা ধরো , তুমি ক্লাসের ভেতরে নরমাল ইমপ্লিমেন্টেশন ও Explicit Interface Implementation একইসাথে ইউজ করতে চাও তাহলে , চলো কি হবে একটু দেখে আসি ।।
using System;
interface Iin
{
void print();
}
interface Iin2
{
void print();
}
public class c1:Iin,Iin2
{
public void print()
{
Console.WriteLine("Hey First Interface Trainer");
}
void Iin2.print()
{
Console.WriteLine("Hey Second Interface Trainer");
}
}
public class Program
{
public static void Main()
{
c1 u = new c1();
c1 y = new c1();
((Iin)u).print();
((Iin2)y).print();
Console.ReadKey();
}
}
এখন মেইন মেথোডে যদি - তুমি টাইপ ক্যাস্টিং না করে - নরমালি কল করো এইভাবে c1.print() ; তাহলে কিন্তু , এখন আর এরর দেখাবে না ।। তোমায় , এখন কন্সল স্ক্রিনে নরমালি ইমপ্লিমেন্টন যে মেথোডের করা হয়েছে , তাই শো করবে ।। এখন ডিফল্ট ভাবেই নরমাল ইমপ্লিমেন্টেশন মেথোড'কেই কল করা হবে ।। তো চলো নিচের কোড'টি লিখে আরো ক্লিয়ার হয়ে নেই ----
using System;
interface Iin
{
void print();
}
interface Iin2
{
void print();
}
public class c1:Iin,Iin2
{
public void print()
{
Console.WriteLine("Hey First Interface Trainer");
}
void Iin2.print()
{
Console.WriteLine("Hey Second Interface Trainer");
}
}
public class Program
{
public static void Main()
{
c1 u = new c1();
u .print();
((Iin2)u).print();
Console.ReadKey();
}
}
তাহলে , এক্সপ্লিসিট ইন্টারফেইস ইমপ্লিমেন্টেশন নিয়ে অনেক কথা হলো ।। আজ এইটুকুই ------
ধরো , তুমি দুইটি ইন্টারফেইস ক্রিয়েট করেছো ।। যাদের ঠিক একই নামের দুইটি মেথোড ডিক্লেয়ার করা হয়েছে ।। তারপর , তুমি একটা ক্লাস ক্রিয়েট করলে ,যেই ক্লাস একই সাথে সেই দুইটা ইন্টারফেইস থেকে ডেরাইভড হয়েছে ।। এখন কি কি ধরনের ঘটনা ঘটতে পারে ???
using System;
interface Iin
{
void print();
}
interface Iin2
{
void print();
}
public class cl:Iin,Iin2
{
public void print()
{
Console.WriteLine("Hey Trainer");
}
}
public class Program
{
public static void Main()
{
cl u = new cl();
u.print();
Console.ReadKey();
}
}
উপরের কোড রান করাও , কোনো এরর পাবেও না ।। বাট , একটা জিনিস খেয়াল করো যে --আমাদের দুইটা ইন্টারফেইস-এরই মেথোড ইমপ্লিমেন্টেশন করা লাগতো ।। বাট , আমি কিন্তু ক্লাসে একটা মেথোড ইমপ্লিমেন্টেশন করেছি । কিন্তু , আমায় কোনো এরর দেখায় নি , কারণ দুইটা ইন্টারফেইসেরই মেথোড নেইম একই ।। এটা না হয় , হলো - কিন্তু, আমাদের কন্সল স্ক্রিনে যে আউটপুট'টা দেখলাম সেটা আসলে কোন ইন্টারফেইস এর মেথোডের ???? বলতে পারবা ???
জানি , পারবে না ।।
আমি যদি বলি , দুইটা আলাদা আলাদা ইন্টারফেইস এর জন্য আলাদা আলাদা জিনিস আউটপুটে দেখাবো , তাহলে কি করতে হবে ?? বলো তো ----------------
using System;
interface Iin
{
void print();
}
interface Iin2
{
void print();
}
public class c1:Iin,Iin2
{
// Explicit Interface Implementation
void Iin.print()
{
Console.WriteLine("Hey First Interface Trainer");
}
//Explicit Interface Implementation
void Iin2.print()
{
Console.WriteLine("Hey Second Interface Trainer");
}
}
public class Program
{
public static void Main()
{
Iin u = new c1();
Iin2 y = new c1();
u.print();
y.print();
Console.ReadKey();
}
}
তাহলে , আমরা বুঝতে পারলাম - কিভাবে Explicit Interface Implementation আসলে কি ???? এবং এটাকে কিভাবে ইমপ্লিমেন্ট করতে হয় ?? আরেকটা কথা আমাদের মনে রাখতে হবে , এই ক্ষেত্রে মেথোড ইমপ্লিমেন্ট করবার সময় কখনোই অ্যাকসেস মোডিফায়ার হিসেবে public / private etc. ইউজ করা যাবে না ।। আমরা , মেইন মেথোডের ভেতরে আলাদা আলাদা ইন্টারফেইসের জন্য আলাদা আলাদা রেফারেন্স ভ্যারিয়েবল ক্রিয়েট করেছি ।। আমরা টাইপ ক্যাস্টিং এর মাধ্যমেও এটা করতে পারি , চলো দেখে আসি ---------------------------
using System;
interface Iin
{
void print();
}
interface Iin2
{
void print();
}
public class c1:Iin,Iin2
{
void Iin.print()
{
Console.WriteLine("Hey First Interface Trainer");
}
void Iin2.print()
{
Console.WriteLine("Hey Second Interface Trainer");
}
}
public class Program
{
public static void Main()
{
c1 u = new c1();
c1 y = new c1();
((Iin)u).print();
((Iin2)y).print();
Console.ReadKey();
}
}
Explicit Interface Implementation করবার পর , তুমি যদি আবার মেইন মেথোডে c1.print(); এরকম লিখে ফেলো , তাহলে কিন্তু হবে না ।। কারণ , Explicit Interface Implementation করে ফেলেছো , সুতরাং এখন আর তোমার ওইভাবে কল করা যাবে না ।।
আচ্ছা ধরো , তুমি ক্লাসের ভেতরে নরমাল ইমপ্লিমেন্টেশন ও Explicit Interface Implementation একইসাথে ইউজ করতে চাও তাহলে , চলো কি হবে একটু দেখে আসি ।।
using System;
interface Iin
{
void print();
}
interface Iin2
{
void print();
}
public class c1:Iin,Iin2
{
public void print()
{
Console.WriteLine("Hey First Interface Trainer");
}
void Iin2.print()
{
Console.WriteLine("Hey Second Interface Trainer");
}
}
public class Program
{
public static void Main()
{
c1 u = new c1();
c1 y = new c1();
((Iin)u).print();
((Iin2)y).print();
Console.ReadKey();
}
}
এখন মেইন মেথোডে যদি - তুমি টাইপ ক্যাস্টিং না করে - নরমালি কল করো এইভাবে c1.print() ; তাহলে কিন্তু , এখন আর এরর দেখাবে না ।। তোমায় , এখন কন্সল স্ক্রিনে নরমালি ইমপ্লিমেন্টন যে মেথোডের করা হয়েছে , তাই শো করবে ।। এখন ডিফল্ট ভাবেই নরমাল ইমপ্লিমেন্টেশন মেথোড'কেই কল করা হবে ।। তো চলো নিচের কোড'টি লিখে আরো ক্লিয়ার হয়ে নেই ----
using System;
interface Iin
{
void print();
}
interface Iin2
{
void print();
}
public class c1:Iin,Iin2
{
public void print()
{
Console.WriteLine("Hey First Interface Trainer");
}
void Iin2.print()
{
Console.WriteLine("Hey Second Interface Trainer");
}
}
public class Program
{
public static void Main()
{
c1 u = new c1();
u .print();
((Iin2)u).print();
Console.ReadKey();
}
}
তাহলে , এক্সপ্লিসিট ইন্টারফেইস ইমপ্লিমেন্টেশন নিয়ে অনেক কথা হলো ।। আজ এইটুকুই ------
No comments:
Post a Comment