صفحه اصلی / دوره‌های آموزشی / آموزش جاوا مقدماتی تا متوسط / استفاده از اینترفیس (interface) در جاوا و نحوه کار با آن

استفاده از اینترفیس (interface) در جاوا و نحوه کار با آن

استفاده از اینترفیس (interface) در جاوا و نحوه کار با آن
براي خريد اين درس نياز است وارد سايت شويد. در صورت نداشتن حساب کاربري عضو شويد.
75,600 تومان

جلسات دوره


                         
مهدی عباسی
مدرس:

مهدی عباسی

18 سال سابقه برنامه‌نویسی و تدریس برنامه‌نویسی
کسب مقام‌های اول و دوم کشوری در مسابقات برنامه‌نویسی

مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مشاهده رزومه

اینترفیس |Interface 
اینترفیس ها دو ویژگی خیلی بزرگ به ما  میدهند:
انتزاعی سازی 100%
امکان ارث بری چند گانه
یعنی در مبحث کلاس ها اجازه نداشتیم که یک کلاس را به صورت همزمان فرزند دو کلاس کنیم، اما ما میتوانیم در این مبحث یک کلاس را فرزند دو اینترفیس کنیم.
برای تعریف اینترفیس لازم نیست از ایجاد کلاس ها استفاده کنیم؛ در همان پنجره ای که کلاس ایجاد میکردیم از گزینه interface استفاده میکنیم.
در اینترفیس ها یا متد داریم یا فیلد؛ اگر ما فیلدی را تعریف کنیم فیلد ما به صورت پیشفرض استاتیک و final و public میباشد.
متدی که در اینترفیس تعریف میکنیم نباید بدنه داشته باشد؛ متد هایی که در اینترفیس تعریف میشوند به صورت پیشفرض public وAbstract هستند یعنی اگر بخواهیم برای اینترفیس ها فرزند تعریف کنیم باید تابع ها را در فرزندان دوباره نویسی کنیم و بدنه تابع را مشخص کنیم.
اگر بخواهیم یک کلاس را فرزند یک اینترفیس کنیم باید بعد از نام کلاس فرزند، از کلمه implements استفاده کنیم.

 

package package1;

public class ChildClass1 implements IA{

	@Override
	public void Print() {

		
	}

}


ما اجازه ساخت نمونه از اینترفیس ها را نداریم اما میتوانیم از فرزندان اینترفیس نمونه بسازیم به این شکل:
 

package package1;

public class MainClass {

	public static void main(String[] args) {
		IA obj1=new ChildClass1();
		IA obj2=new ChildClass2();

	}

}


برای دیدن خروجی این اشیاء به شکل زیر عمل میکنیم:
 

package package1;

public class MainClass {

	public static void main(String[] args) {
		IA obj1=new ChildClass1();
		IA obj2=new ChildClass2();
		
		obj1.Print();
		obj2.Print();

	}

}


اما از جاوای 8 به بعد دو اتفاق جالب افتاد، یکی این که ما میتوانیم داخل اینترفیس ها متد های default تعریف کنیم و این متد ها میتوانند بدنه داشته باشند:
 

 package package1;

public interface IA {
	float PI=3.14f;
	
	void Print();
	default void TestPrint() {
		System.out.println("Hello...");
	}
}


مورد بعدی این که میتوانیم داخل اینترفیس ها متد های استاتیک با بدنه داشته باشیم به شکل زیر:
 

package package1;

public interface IA {
	float PI=3.14f;
	
	void Print();
	default void TestPrint() {
		System.out.println("Hello...");
	}
	
	static int Sum(int a,int b) {
		return a+b;
	}
}


برای استفاده از این کد ها به شکل زیر عمل میکنیم:
 

package package1;

public class MainClass {

	public static void main(String[] args) {
		IA obj1=new ChildClass1();
		IA obj2=new ChildClass2();
		
		obj1.Print();
		obj2.Print();
		
		obj1.TestPrint();
		obj2.TestPrint();
		
		System.out.println(IA.Sum(23, 45));
		System.out.println(IA.PI);
	}

}


همانطور که در اول این جلسه توضیح دادیم یک کلاس معمولی نمیتواند از دو کلاس همزمان ارث بری کند اما میتواند از دو اینترفیس ارث بری کند
در اینجا ما میخواهیم کلاس ChildClass3 از دو اینترفیس IA و IB ارث بری کند:

 

package package1;

public class ChildClass3 implements IA,IB{

	@Override
	public void Show() {
		
		
	}

	@Override
	public void Print() {
		
	}

}


خود اینترفیس ها نیز میتوانند از هم ارث بری کنند؛ مثلا اگر یک اینترفیس دیگر داشته باشیم که قرار است فرزند یک اینترفیس باشد از کلمه extends استفاده میکنیم به شکل زیر:
 

package package1;

public interface IC extends IB{

}


و اگر یک کلاس فرزند این اینترفیس، که فرزند یک اینترفیس دیگر است باشد باید بدنه تابع های والد را مشخص کند:
 

package package1;

public class ChildClass4 implements IC{

	@Override
	public void Show() {
		
	}

	@Override
	public void Message() {
		
	}

}

 

نظرات دانشجویان

کاربر درسمن
رضا

سلام، وقتتون بخیر من یه سوال داشتم : اگه نخوایم برای کلاس ها و اینترفیس هامون فرزند تعریف کنیم، چطوری میتونیم برای متد ها و تابع هاشون بدنه بنویسیم؟ (نوشتن بدنه برای متد ها بدون استفاده از فرزندان)

پشتیبانی 1
پشتیبانی 1

سلام رضا جان، لطفا اگر زحمتتون نمیشه سوالتان را در انجمن پرسش و پاسخ بپرسید تا سریع تر به جوابتان برسید، از همکاری شما مچکریم.

نمایش بیشتر

نظر شما در تصمیم دیگران اثرگذار است.

لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.

برای ارسال نظر نیاز است وارد سایت شوید. در صورت نداشتن حساب کاربری عضو شوید.
ثبت نام

194