الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ابغى اعرف ليش حطينا static

مغلق
بدأه نجمه في 11 يوليو 2005 · 5 رد · 662 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اول شيء اسمحلولي اهنيكم على هذا المنتدى الاكثر من رائع

وهذه طبعا اول مشاركه لي

اليوم اخذنا في الجامعه هذا الكود ولكنني لم اعرف ما فائده static قبل JFrameحيث انني لو لم اكتبها فانه سيطلع ايررور

ولقد سألت الدكتور ولكن لم افهم منه

الكود

import javax.swing.event.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
class JPanelDemo extends JPanel{
   JLabel lbl;
  static JFrame frm;
   JPanelDemo(){
    lbl=new JLabel("Najmah");
    add(lbl);
   }
   public static void main(String s[]){
    JPanelDemo jp=new  JPanelDemo();
    frm=new JFrame();
    frm.getContentPane().add(jp);
    frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frm.pack();
    frm.setVisible(true);
   }
  }

تم تعديل هذه المشاركة بواسطة رامي العيساوي في 12 يوليو 2005 في 04:48

#2

السلام عليكم

لايمكن ادخال اي متغير غير static الى main() لكن يمكن عمل object داخل main نفسهااو كما يسمى instans .

يتم تعريف متغير او اوبجكت او مثود في حالة كترة استدعاء هذا المتغير او المثود او الابجكت

بحيث تسهل عملية الاستدعاء بدون عملية instans في كل مره

لاحظي نفس الكود لكن تم صنع الابجكت داخل المثود main بدون ان يعرف كا static

import javax.swing.event.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
class JPanelDemo extends JPanel{
JLabel lbl;

JPanelDemo(){
lbl=new JLabel("Najmah");
add(lbl);
}
public static void main(String s[]){
JPanelDemo jp=new JPanelDemo();
 JFrame frm =new JFrame();
frm.getContentPane().add(jp);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.pack();
frm.setVisible(true);
}
}

زورو موقعنا

www.algabal.com

#3

هناك قاعدة أنه لايمكن استخدام مثود أو اي شيء معرف على أنه غير static داخل اخرى لها الصفة static لكن العكس ممكن

من الممكن ان يكون الكود كما وضعه الأخ أكرم و هناك صيغة أخرى و هو كما وضعتيه

import javax.swing.event.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
class JPanelDemo extends JPanel{
JLabel lbl;
static JFrame frm;
JPanelDemo(){
lbl=new JLabel("Najmah");
add(lbl);
}
public static void main(String s[]){
JPanelDemo jp=new JPanelDemo();
frm=new JFrame();
frm.getContentPane().add(jp);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.pack();
frm.setVisible(true);
}
}

هنا انت مضطرة لأن تضعي static لأنك ستستخدمينها في الطريقة main

وتذكري ان اي شيء static ينتمي الى الـclass نفسه وليس الى اي من حقوله و تستطيعين الرجوع اليه من الصف مباشرة و ليس من اي من أغراضه اي يمتد مجاله حتى نهاية تعريف كتلة الـ class

أي استفسار نحن في الخدمة

الحياة كلها وقفة عز فقط

------------------------------------------

المجتمع معرفة و المعرفة قوة

#4

اهلا بك معنا و ارجو ان تسامحني لتعديل مشاركتك و لكن عدلتها لكي تظهر بشكل اوضح و مقروء

و الشباب مثل مالك شايفة ما قصرو معك

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#5

الـ static تعني ان المتغير (او الـ method) غير مرتبط بكائن معين, بل بالكلاس نفسه.

ممكن التفكير فيه كأنه global variable و هو بالفعل كذلك (من وجهة نظري)

الفرق الوحيد ان هذا الـ global variable موجود داخل كلاس, لذلك اذا اردنا الاشارة اليه نحتاج اسم الكلاس قبله.

مثال:

public class GlobalHack
{
    public static int secretNumber = 34;
}

و نستطيع في اي مكان اخر في البرنامج ان نصل الى هذا المتغير هكذا:

GlobalHack.secretNumber

مثلا:

System.out.println( GlobalHack.secretNumber );
GlobalHack.secretNumber = 55;
System.out.println( GlobalHack.secretNumber );

و لكن اذا كنا داخل الكلاس نفسه, فلا نحتاج ان نضع اسم الكلاس .. لان الكلاس نفسه يعرف ان هذا المتغير موجود فيه ..

يعني اذا كنا داخل الكلاس يكفي ان نقول

secretNumber

للوصول الى المتغير.

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 12 يوليو 2005 في 05:46

#6

لاخ اكرم اشكرك اخي الكريم على مرورك وعلى التوضيح

الاخ hani1 تسلم على مروروك الطيب وعلى التوضيح ايضا

الاخ مشرف قسم الجافا رامي العيساوي لا اخي كافيها شيء لو عدلت وسامحني لاني عضوه جديده في المنتدى لكن ان شاءالله مع الايام نتعلم

اشكرك على مرورك الكريم

الاخ hasan_aljudy تسلم على المثال الي وضح الي الصوره اكثر واكثر

تحياتي اختكم نجمه

هذا الموضوع مغلق.

مواضيع مشابهة