نمایش نتایج 1 تا 14 از 14

نام تاپیک: کلاسهای abstract

  1. #1

    کلاسهای abstract

    سلام.
    من یک کلاس abstract دارم که با 2 کلاس دیگه رابطه داره و من یک نمونه از اونها رو در کلاس abstract،new کردم.حالا من تو کلاس که از این کلاس abstract مشتق شده میخوام از نمونه های new شده استفاده کنم اما نمیشه، میگه باید یک نمونه بسازی. مگه همه attribute ها و متدها و روابط کلاس پایه به کلاسهای مشتق شده به ارث نمیرسن؟

    متشکرم.

  2. #2

  3. #3
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط resident مشاهده تاپیک
    سلام.
    من یک کلاس abstract دارم که با 2 کلاس دیگه رابطه داره و من یک نمونه از اونها رو در کلاس abstract،new کردم.حالا من تو کلاس که از این کلاس abstract مشتق شده میخوام از نمونه های new شده استفاده کنم اما نمیشه، میگه باید یک نمونه بسازی. مگه همه attribute ها و متدها و روابط کلاس پایه به کلاسهای مشتق شده به ارث نمیرسن؟

    متشکرم.
    تعریف و مشکلتان گیج کننده است، اصلا معلوم نیست اروری که میگیرید زمان کمپایل است یا در زمان اجرا، پروژه کاملتان را بفرستید که هم ارور را ببینیم و هم تمام کلاسها دستمان باشد.

  4. #4
    این قسمتی از کلاس abstract:
     
    publicpartialclassfrm_vasileye_emale_loab : parent
    {
    ()shablon sh = newshablon;
    }


    public abstract class vasileye_emale_loab
    {
    pishnahade_tarh pt = new pishnahade_tarh();
    check_invalid_input cii = new check_invalid_input();
    private string _code_vasileye_emale_loab;


    public string code_vasileye_emale_loab
    {
    get {return _code_vasileye_emale_loab ;}
    set
    {
    if (cii.chkletter_digit(value))
    _code_vasileye_emale_loab = value;
    else
    return;
    }
    }

    }


    classshablon:vasileye_emale_loab
    {
    privatestring _code_shablon;
    privatestring _tarikhe_resid_sal;
    personel p=newpersonel();

    ...
    }


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

  5. #5
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط resident مشاهده تاپیک
    این قسمتی از کلاس abstract:
     
    ...


    در فرم وسیله اعمال لعاب یک آبجکت از کلاس شابلون ایجاد کردم و چون آبجکت کلاس پیشنهاد طرح به شابلون ارث رسیده ،می خوام به یکی از فیلدهای کلاس پیشنهاد طرح دسترسی داشته باشم. آیا این کار شدنی است؟
    ۱) اینکه در کجایه کد به چه اروری بر میخورید را نگفتید
    ۲) اگر کلاس B از کلاس A به ارث ببره به تمام فیلدهای غیره private ش دسترسی دارد، با این مقدار کد نمیشه بیشتر از این کمک کرد.

  6. #6
    اگر کلاس B از کلاس A به ارث ببره به تمام فیلدهای غیره private ش دسترسی دارد،
    به آبجکت ها چی؟ مثلا کلاس شابلون که از کلاس وسیله اعمال لعاب مشتق شده به شیء pt دسترسی داره؟

  7. #7
    مثلا کلاس شابلون که از کلاس وسیله اعمال لعاب مشتق شده به شیء pt دسترسی داره
    طبق کد شما خیر دسترسی نداره.
    شما برای شی pt هیچ access modifier ای نگذاشتید. و پیش فرض در C#‎ بصورت private است. پس شی pt در subclass دیده نخواهد شد. مگه اینکه بصورت public تعریف بشه.

  8. #8
    نقل قول نوشته شده توسط reza_rad مشاهده تاپیک
    طبق کد شما خیر دسترسی نداره.
    شما برای شی pt هیچ access modifier ای نگذاشتید. و پیش فرض در C#‎ بصورت private است. پس شی pt در subclass دیده نخواهد شد. مگه اینکه بصورت public تعریف بشه.
    pt رو در کلاس وسیله اعمال لعاب public تعریف کردم اماموقع کامپایل error زیر رو میده.
    Error 2 Inconsistent accessibility: field type 'lab_material.mahsoolat.pishnahade_tarh' is less accessible than field 'lab_material.mahsoolat.vasileye_emale_loab.pt' G:\Project Implementation\lab-material\lab-material\mahsoolat\vasileye_emale_loab.cs 9 32 lab-material


    دلیل رخ دادن این errorچیه ؟چه جوری رفعش کنم.
    متشکرم.

  9. #9
    کد کلاس pishnahade_tarh رو اینجا بگذارید.

  10. #10
    کاربر دائمی آواتار Masoud_TB
    تاریخ عضویت
    آذر 1386
    محل زندگی
    Tehran
    پست
    165
    دلیلش اینه که کلاس shablon به صورت internal تعریف شده ولی مابقی کلاس ها public هستند در نتیجه compile time error خواهی داشت. کافیه که توی تعریف کلاسات همشون یک جور دسترسی داشته باشد. یا public یا internal.

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

    خواهش: لطفا موقع برخورد با هر گونه خطا ابتدا خطا و متن کد رو قرار بدین.

  11. #11
    نقل قول نوشته شده توسط reza_rad مشاهده تاپیک
    کد کلاس pishnahade_tarh رو اینجا بگذارید.
     
    class pishnahade_tarh
    {
    private string _code_pishnahade_tarh;
    private string _name_tarhe_pishnahadi;
    private string _noe_mahsool;
    private string _tedade_chap;
    private string _zamine;
    private string _tarikh;
    private string _vaziat;
    check_invalid_input cii = new check_invalid_input();

    public string code_pishnahade_tarh
    {
    get { return _code_pishnahade_tarh; }
    set
    {
    if (cii.chkletter_digit(value))
    _ code_pishnahade_tarh = value;
    else
    return;
    }
    }

    public string name_tarhe_pishnahadi
    {
    get { return _name_tarhe_pishnahadi; }
    set
    {
    if (cii.chkletter(value))
    _name_tarhe_pishnahadi = value;
    else
    return;
    }
    }

    public string tedade_chap
    {
    get { return _tedade_chap; }
    set
    {
    if (cii.chkdigit(value) )
    if (int.Parse(value) <= 5 && int.Parse(value)>0)
    _tedade_chap = value;
    }
    }

    public string tarikh
    {
    get{return _tarikh;}
    set
    {
    if(cii.ChkDate(value))
    _tarikh=value;
    }
    }

    public string vaziat
    {
    get{return _vaziat;}
    set{ _vaziat = value;
    }
    public string noe_mahsool
    {
    get { return _noe_mahsool; }
    set { _noe_mahsool = value; }
    }

    public string zamine
    {
    get { return _zamine; }
    set { _zamine = value; }
    }
    }

  12. #12
    مشکل اینجاست:
    class pishnahade_tarh

    بجاش این رو بنویسید:

    public class pishnahade_tarh

    چون کلاس شما access modifier نداره یعنی بطور پیش فرض بصورت private تعریف شده و باعث ایجاد اون مشکل میشه. کلا در C#‎ شما هر جای متغیر ، کلاسی تعریف کنی و براش Access modifier نگذاری بصورت پیش فرض private در نظر گرفته میشه.

  13. #13
    کاربر دائمی آواتار Masoud_TB
    تاریخ عضویت
    آذر 1386
    محل زندگی
    Tehran
    پست
    165
    نقل قول نوشته شده توسط reza_rad مشاهده تاپیک
    مشکل اینجاست:
    چون کلاس شما access modifier نداره یعنی بطور پیش فرض بصورت private تعریف شده و باعث ایجاد اون مشکل میشه. کلا در C#‎ شما هر جای متغیر ، کلاسی تعریف کنی و براش Access modifier نگذاری بصورت پیش فرض private در نظر گرفته میشه.

    دوست عزیز اصولا کلاس های یا بهتره بگیم تمامی تایپ هایی که در سطح namespace تعریف می شوند نمی توانند private باشند و در نتیجه حداقل دسترسیشون internal خواهد بود.

    پس کلاس نمی تواند private باشد مگر اینکه به صورت nested تعریف شود.

  14. #14
    دوست عزیز اصولا کلاس های یا بهتره بگیم تمامی تایپ هایی که در سطح namespace تعریف می شوند نمی توانند private باشند و در نتیجه حداقل دسترسیشون internal خواهد بود.

    پس کلاس نمی تواند private باشد مگر اینکه به صورت nested تعریف شود.
    بله صحیح است. اشتباه از من بود. همانطوری که گفتند کلاس private تعریف نمیشه.

تاپیک های مشابه

  1. پاسخ: 2
    آخرین پست: سه شنبه 16 بهمن 1386, 20:37 عصر
  2. پیغام abstract error در هنگام اجرای برنامه
    نوشته شده توسط mehialdst در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: دوشنبه 30 مرداد 1385, 07:09 صبح
  3. آموزشی : Abstract Methods
    نوشته شده توسط m-khorsandi در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: یک شنبه 07 فروردین 1384, 13:59 عصر
  4. DLL و Abstract
    نوشته شده توسط _alish_ در بخش برنامه نویسی در Delphi
    پاسخ: 14
    آخرین پست: سه شنبه 04 اسفند 1383, 11:06 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •