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

هل كل static method هو public

مغلق
بدأه yadoo86 في 10 أكتوبر 2005 · 3 رد · 650 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم يا أخوان :

كان لدي سؤالين :

1- هل كل method static أو كل variable static لا يحتاج الى كلمة public , و أذا كان لدي static method فأذا قمت ببناء object معين هل أستطيع الوصول الى method static من خلال هذة ال object

2- أنظروا الى هذا البرنامج وهو من ملفين:

الملف الأول :

class Sphere {


static int count = 0;
double radius = 6;

double volume() {
	return (4.0/3.0)*radius*radius*radius;
}  
}

و ملف ثاني

class CreatesSphere {
	public static void main (String[] args){
  Sphere ball1 = new Sphere();
  System.out.println("Number of object ="+ Sphere.getCount());
  System.out.println(ball1.volume());
	}
}

وسؤالي هو لماذا أصل الى method volume في ball1 مع علم أني لم أضع public عند تعريف method

مع جزيل شكر للجميع

تم تعديل هذه المشاركة بواسطة yadoo86 في 10 أكتوبر 2005 في 01:13

winter-main.jpg

6179.gif

#2

بسم الله الرحمن الرحيم

أخي العزيز

الملاحظ انك تكتب تعريف الفانكشن بالطريقة التالية

double volume() {}

اقصد انك لم تحدد نوع ال access modifers

(private,public,protected)

وفي مثل هذه الحالات فان ال compiler يعتبرها ال default أي يسمح بالوصل اليها من اي مكان بداخل ال package بكاملها.

#3

1. أولاً لا علاقة للكلمة static بالكلمة public تعني أن هذا المتغير أو الطريقة هو سكوني وهو على مستوى الصف أي يمكن الوصول إليه من الصف نفسه. فمثلاً يمكنك أن تكتب Sphere.count كما تبقى إمكانية الوصول إليه عن طريق object ممكنة، ولكن يجب أن تتذكر أن هذا المتغير يبقى من مستوى الصف في الأعلى، فمثلاً

Sphere sphere1 = new Sphere();
Sphere sphere2 = new Sphere();
sphere1.count = 5;
System.out.print(Sphere.count);
System.out.print(sphere1.count);
System.out.print(sphere2.count);

الناتج سوف يكون طبعاً 555.

أما بالنسبة لكلمة public فهي لتحدد سماحية الوصول للتمغير أو الطريقة وتعني طبعاً بأن السماحية هي عمومية، أي أن أي صف يستطيع رؤية هذا المتغير.

وكما هو معروف هناك كلمتان أخريتان لتحددا سماحية الرؤية هما private والتي تمنع الوصول للتغير أو الطريقة من خارج الصف التي عرفت فيه، والكملة protected التي تسمح بالرؤية للصفوف المشتقة والتي في نفس الحزمة. أما إذا لم تكتب شيء فيرمز لذلك المتغير بأنه متغيير default أي أنه متغير يمكن رؤيته من الصفوف التي في نفس الحزمة فقط.

أعتقد أن هذا يجيب على سؤالك الثاني أيضاً.

#4

توجد 4 صلاحيات للتعامل مع الطرق والمكونات والفئات الداخلية:

public void someMethod() 
protected void protectedMethod()
package void packageMethod() //تستطيع عدم كتابتها
private void privateMethod()

لاحظ أنك إذا لم تكتب شيئا فستكون package!

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

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