بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

جناب آقاجانی : نمیدونم چرا Interface رو درک نمیکنم !

مدیریت گفتگو
Reza 11 سال پیش
آخرین تغییر: 9 سال پیش

سلام جناب آقاجانی ، خسته نباشید

    حدود 2 هفته ای میشه که آموزش های اندروید رو گرفتم ، دستتون درد نکنه ، واقعا عالیه و تونستم بدون هیچ مشکلی طی 10 روز بخش های 5 و 6 و 7 و 8 رو تموم کنم و تا اینجا همه مباحث رو خوب متوجه شدم . اما به محض اینکه وارد قسمت 3 از بخش 8 ( Interface ) شدم ، و با توجه به اینکه شما فرمودید مبحث بسیار مهمیه و در پروژه های آینده خیلی ازش استفاده میشه ، دیگه از برنامه نویسی نا امید شدم . الان 2 روزه که هر چی این قسمت رو میبینم نمیتونم خوب درکش کنم ، البته یه چیزای خیلی کمی فهمیدم ولی در مقایسه با بخش های قبلی که 100 % یاد گرفتم ، این قسمت رو حدود 10 % فهمیدم و دقیقا نمیدونم کاربردش کجاست ؟

    حالا سوالم اینه که با توجه به اینکه در توضیحات مربوط به این قسمت نوشتید " مفاهیم مطرح شده در ویدیو را خوب یاد بگیرید " ، آیا میتونم بخش بعدی رو شروع کنم تا با مثال هاش این مبحث رو یاد بگیرم یا اینکه حتما باید به درک کامل بخش Interface برسم ؟

و اگه نباید به بخش بعد برم ، لطفا راهنماییم کنید که چیکار کنم Interface رو خوب درک کنم ؟

بسیار ممنون .

نظرات

rad 11 سال پیش
interface ها که آسونند؟کجاش گیر داری؟حیونها هم صدا دارند و هم حرکت و ماشین حرکت داره !اگه خواستی بگو شاید تونستم راهنمایی کنم
Reza 11 سال پیش
کلا نمیدونم کاربردش چیه ؟ مثلا همون مثالی که در سورس نوشته شده ، خب میتونه با نوشتن یه کلاس معمولی و قرار دادن متد در اون به همون نتیجه رسید .
rad 11 سال پیش
از کاربرد های interface ها استفاده اونها به عنوان lisener هست bookmark list رو دانلود کردی؟قسمت دوم interface ها به کاربردش میپردازه
Reza 11 سال پیش
آره ، دیدم ، کلش رو 4 بار دیدم ، فقط نمیدونم ارتباط بین متد onData در کلاس اصلی و همون متد در کلاس DataReceiver چیه ؟
Criss 11 سال پیش
دوست عزیز این بخش رو ول کنید < برید جلو < وقتی به بخش 15 رسیدید که از Listener ها استفاده میشه < میتونید برگردید و این بخش رو نیگاه کنید

پاسخ‌ها 1

rad 11 سال پیش

اول یک 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 ما فقط توسط  یک فیلد آنرا فراخوانی و مقدار دهی کرده ایم

که البته میتوان با تغییر نام فیلد کلاس متد و رشته مورد اشاره مسئله، مبحث بهتر جا بیافتد

نظرات

Reza 11 سال پیش
ممنون ، کم کم دارم میفهمم .
شمیم ظهور 9 سال پیش
ببخشید من هم توی مبحث لیسنر مشکل دارم.الان ک توضیحات شما رو خوندم بیستر متوجه شدم ولی هنوز هم متوجه نشدم که چرا DataReceiver رو ساختیم و توش فیلد onDataListener رو ایجاد کردیم؟کلا DataReceiver این وسط چیکاره س/؟ بنظر خودم چون مفهوم فیلد رو عمیق نفهمیدم این سوال برام پیش اومده؟

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .