ورود

View Full Version : سوال: چگونگی دستیابی به متد های کلاس دیگر در eclips



leila94
چهارشنبه 30 اردیبهشت 1394, 19:07 عصر
دوستان کسی میتونه کمکم کنه چطور میتونم به متدهای کلاس دیگه که درون package دیگری ساخته شده دستیابی پیدا کنم ؟
ممنون
این کلاس پدر هستش

package Newme;

public class You {
public static void hello(){
System.out.println("Hi");
}

}
این کلاس فرزند هستش که میخام از متد hello استفاده کنم ولی نمیشه...


package Newp;

import Newme.You;

public class Me extends You {
Me M=new Me();
M.hello();

}
تو این کلاس hello خطا داره ....

Hossein8867
چهارشنبه 30 اردیبهشت 1394, 23:01 عصر
با سلام.کدهایتان را به کدهای زیر تغییر بدهید مشکلتان حل می شود.
موفق باشید





package Newp;

import Newme.You;

public class Me extends You {
public static void me(){
Me M=new Me();
M.hello();
}

public static void main(String[] args) {
me();
}


}

-سیّد-
پنج شنبه 31 اردیبهشت 1394, 11:48 صبح
در واقع اینجا چند تا نکته هست:
یکی این که توی جاوا نمی‌تونید اون وسط همینطوری یه تابع رو فراخوانی کنید و تقریباً تمام کد باید توی توابع نوشته بشه (این تقریباً که گفتم، به خاطر اینه که بعضی کارها مثل مقداردهی به یه متغیر رو می‌شه خارج از تابع و هنگام تعریف متغیر انجام داد).
نکته‌ی دوم این که چون تابع hello رو static تعریف کردید، برای فراخوانیش نیازی به ساختن یک شیء از کلاس You یا Me ندارید و می‌تونید مستقیماً از طریق خود کلاس فراخوانیش کنید:

You.hello();
// یا
Me.hello();

در واقع یه تابع static متعلق به خود کلاس هست، نه به یک شیء خاص.
و در نهایت این که اسم متغیرتون رو که گذاشتید M خیلی جالب نیست، معمولاً اسامی متغیرها با حروف کوچیک شروع می‌شه و اسم کلاس‌ها با حروف بزرگ.

Hossein8867
پنج شنبه 31 اردیبهشت 1394, 16:06 عصر
با سلام.مطالبی که دوست عزیزمون سید گفتن کاملا صحیح است.اگر من هم به صورت بالا براتون نوشتم به این دلیل بود که شبیه کدهای خودتان باشد و الا نوشتن دستورات در هر زبان برنامه نویسی قواعد خودش را دارد.اما این قواعد بین برنامه نویسان قراردادی است و اجباری نیست یعنی اگر رعایت نشوند برنامه پیغام خطا نمی دهد اما بهتر است رعایت شوند تا به زیبایی کدهای شما بیفزایند و از لحاظ دیگر برنامه نویسان نیز خوب به نظر برسد.نکته دیگر هم که ایشان گفتن کاملا صحیح می باشد یا نباید شئ می ساختید و متد را static تعریف می کردید یا متد را static تعریف نمی کردید و شئ می ساختید.
موفق باشید