جناب آقاجانی : نمیدونم چرا Interface رو درک نمیکنم !
سلام جناب آقاجانی ، خسته نباشید
حدود 2 هفته ای میشه که آموزش های اندروید رو گرفتم ، دستتون درد نکنه ، واقعا عالیه و تونستم بدون هیچ مشکلی طی 10 روز بخش های 5 و 6 و 7 و 8 رو تموم کنم و تا اینجا همه مباحث رو خوب متوجه شدم . اما به محض اینکه وارد قسمت 3 از بخش 8 ( Interface ) شدم ، و با توجه به اینکه شما فرمودید مبحث بسیار مهمیه و در پروژه های آینده خیلی ازش استفاده میشه ، دیگه از برنامه نویسی نا امید شدم . الان 2 روزه که هر چی این قسمت رو میبینم نمیتونم خوب درکش کنم ، البته یه چیزای خیلی کمی فهمیدم ولی در مقایسه با بخش های قبلی که 100 % یاد گرفتم ، این قسمت رو حدود 10 % فهمیدم و دقیقا نمیدونم کاربردش کجاست ؟
حالا سوالم اینه که با توجه به اینکه در توضیحات مربوط به این قسمت نوشتید " مفاهیم مطرح شده در ویدیو را خوب یاد بگیرید " ، آیا میتونم بخش بعدی رو شروع کنم تا با مثال هاش این مبحث رو یاد بگیرم یا اینکه حتما باید به درک کامل بخش Interface برسم ؟
و اگه نباید به بخش بعد برم ، لطفا راهنماییم کنید که چیکار کنم Interface رو خوب درک کنم ؟
بسیار ممنون .
اول یک interface ایجاد میکنیم وداخلش یک متد با پارامتری از جنس String تعریف میکنیم.
public interface OnDataListener {
public void onData(String data);
}
و یک کلاس تعریف میکنیم ، که در آن یک فیلدی از جنس اینترفیس تعریف شده ایجاد میکنیم
public class DataReceiver extends Thread { public OnDataListener onDataListener;
چون این فیلد از جنس اینترفس تعریف شده پس به متد های داخل آن که OnData هست میتوان دسترسی داشت
onDataListener.onData("Some Result");
و وقتی ما در کلاس اصلی ، مثل زیر یک OnclickLisener تعریف میکنیم
DataReceiver dataReceiver = new DataReceiver();
dataReceiver.onDataListener = new OnDataListener() {
@Override
public void onData(String data) {
Log.i("LOG", "Data: " + data);
}
};
dataReceiver.start();
}
خود به خود متد OnData در اینجا Override میشود که در بر دارنده رشته Some Result هست
حال سوال شما :متد onData در کلاس اصلی همان Override شده ی اینترفیس OnDataListener هست
ودر کلاس DataReceiver ما فقط توسط یک فیلد آنرا فراخوانی و مقدار دهی کرده ایم
که البته میتوان با تغییر نام فیلد کلاس متد و رشته مورد اشاره مسئله، مبحث بهتر جا بیافتد
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .