לא מצליח ליצור אובייקט בג'אווה - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

לא מצליח ליצור אובייקט בג'אווה


NU96

Recommended Posts

שלום לכולם,

התחלתי לכתוב תוכנה שתעזור לי לבדוק כל מיני שיטות במשחקי קלפים יצירתי מחלקה של חפיסת קלפים הקונסטרוקטור נראה כך:

    public class DeckOfCards
{
char[] Cards;
int nod;
public DeckOfCards(int nodc) //יצירת חפיסה
{
int n=1;
this.nod=nodc;
this.Cards=new char[nodc*52];
while(n<4*nodc){
this.Cards[1+n*13-1]='A';
this.Cards[2+n*13-1]='2';
this.Cards[3+n*13-1]='3';
this.Cards[4+n*13-1]='4';
this.Cards[5+n*13-1]='5';
this.Cards[6+n*13-1]='6';
this.Cards[7+n*13-1]='7';
this.Cards[8+n*13-1]='8';
this.Cards[9+n*13-1]='9';
this.Cards[10+n*13-1]='T';
this.Cards[11+n*13-1]='J';
this.Cards[12+n*13-1]='Q';
this.Cards[13+n*13-1]='K';
n++;
}
}

וניסיתי ליצור אותו כך:

    public static void main (String[]args)
{
Scanner in=new Scanner(System.in);
DeckOfCards doc;
int nod;
System.out.println("הכנס מספר חפיסות");
nod=in.nextInt();
doc=new DeckOfCards(nod);
}

אבל הECLIPSE רושם לי:

No enclosing instance of type BlackJack is accessible. Must qualify the allocation with

an enclosing instance of type BlackJack (e.g. x.new A() where x is an instance of

BlackJack).

BlackJack זה השם של כל הפרוייקט.

למישהו יש מושג מה לעשות?

קישור לתוכן
שתף באתרים אחרים

להבא יעזור אם תכניס את כל הקוד.

בשתי מילים: תוסיף את המילה static בהצהרה על המחלקה DeckOfCards (דהיינו public static class DeckOfCards במקום public class DeckOfCards) או לחילופין תעביר את כל המחלקה לקובץ נפרד בשם DeckOfCards.java.

הסבר:

לפי השגיאה, הגדרת את המחלקה DeckOfCards כמחלקה פנימית של המחלקה BlackJack. בג'אווה, מחלקה פנימית (שאינה מוגדרת כ-static) משוייכת למחלקה האב, וכל מופע שלה חייב להיות משויך למופע ספציפי של מחלקת האב. במקרה שלך ניסית ליצור מופע של DeckOfCards בלי קישור לשום מופע של BlackJack (משום שיצרת אותה מתוך פונקציה סטטית) ולכן הקומפיילר צעק על שגיאה. אם המחלקה הפנימית מוגדרת כ-static אז אין בעיה ותמיד אפשר ליצור מופע של המחלקה.

אם כל זה לא אומר לך כלום אז לא משנה, תלמד את זה כשתגיע לנושא של מחלקות פנימיות.

קישור לתוכן
שתף באתרים אחרים

אם אתה רק מתחיל ללמוד ג'אווה, אז כמו שאמרתי - זה משהו שתגיע אליו כשתלמד על מחלקות פנימיות (inner class או nested class). אם אתה רוצה ללמוד על זה אתה יכול פשוט לחפש בגוגל "ג'אווה מחלקה פנימית" או "java inner class" ותמצא הרבה הסברים.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...