رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

اینترفیس یک نوع قرارداد است. هر کلاس می‌تواند یک یا چند اینترفیس را به‌کار گیرد و پیاده‌سازی (implement) کند. کلاسی که یک اینترفیس را پیاده‌سازی کند باید قواعد تعریف شده در آن را رعایت کند.

در عمل اینترفیس ساختاری مانند کلاس دارد که تعدادی متد در آن تعریف می‌شوند اما این متدها بدنه ندارند و فقط امضای آن‌ها تعریف شده است. کلاسی که یک اینترفیس را پیاده‌سازی می‌کند باید تمام متدهای موجود در آن اینترفیس را Override کند.
متدهای موجود در یک اینترفیس بدنه‌ای ندارند و بنابراین مشخص نیست که چه کاری انجام می‌دهند. هر کلاسی که اینترفیس را پیاده‌سازی می‌کند می‌تواند به شکل دلخواه خود بدنه آن متد را تعریف کنند.

 

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

همچنین متغیرهایی که در interface تعریف میشوند همه آنها سه قابلیت زیر را دارند:

  1. همه آنها public هستند.
  2. همه آنها static هستند.
  3. همه آنها final هستند.

Interface Class

public interface MyTestInterface {
 
    void testFunctionOne();
 
    void testFunctionTwo();
 
}

 

هر کلاس میتواند یک یا چندین interface را implements کند. با این کار کلاس ما موظف میشود تمام متدهای که در interface تعریف شده و بدون بدنه هستند را پیاده سازی کامل کند. نکته آخر اینکه همانند کلاس interface ها هم میتوانند همدیگر را extends کنند.

package com.coderzheaven.interfacetest1;
 
import android.app.Activity;
import android.os.Bundle;
 
public class MainActivity extends Activity implements MyTestInterface {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
    @Override
    public void testFunctionOne() {
        System.out.println("Print from testFunctionOne in the Interface");
    }
 
    @Override
    public void testFunctionTwo() {
        System.out.println("Print from testFunctionTwo in the Interface");
    }
}

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • مطالب مشابه

    • توسط aminsh77
      با سلام
      من برای ارتباط بین اکتیویتی و فراگمنت از interface استفاده کردم به شکل زیر:
      کدهای فراگمنت:
      public class Fragment_one extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.one_fragment, container, false); return view; } public interface message { public void showName(int name); } @Override public void onResume(){ super.onResume(); //OnResume Fragment ((message) getContext()).showName(1); } }  
      و کد های اکتویتی:
       
      public class MainActivity extends AppCompatActivity implements Fragment_one.message, Fragment_two.message, Fragment_three.message{ Toolbar toolbar; int fragment_number; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setTitle(getString(R.string.app_name)); //// مشکل //// چون خارج از متد showname هست /// مقدار name رو نمیگیره int a = fragment_number; System.out.println("Fragment-Num :" + a); //// مشکل } @Override public void showName(int name) { fragment_number = name; /// این چون داخل متد showName هست ///مشکلی نداره و کار میده System.out.println("Fragment :" + fragment_number); } }  
       
      کد به خوبی کار میده و مشکل من اینه اون مقدار عددی showName رو وقتی توی  fragment_number خارج از متد showName مقدار رو نمیگیره
      اون قسمتی که نوشتم مشکل رو میگم تو کد های اکتیویتی
       
      حالا چجور اون مقدار رو خارج از متد بگیرم؟؟
       
      لطفا راهنماییم کنید خیلی گیرم
       
      با تشکر
  • فایل

×
×
  • اضافه کردن...