D1-kifpool

آموزش زبان برنامه نویسی جاوا: پکیج‌ ها

یک‌شنبه 12 اردیبهشت 1395 - 11:30
مطالعه 18 دقیقه
در جاوا قابلیتی وجود دارد که به وسیله‌ی آن می‌توانیم کلاس‌های خود را دسته‌بندی و سازماندهی کنیم. package یا دسته‌بندی کردن کلاس‌ها این امکان را به ما می‌دهد تا بتوانیم کلاس‌هایی که به یک دسته متعلق هستند یا کاربرد مشابهی دارند را در کنار هم قرار دهیم. همچنین می‌توانیم بیش از یک فایل برنامه که پسوند java. دارد را با نام‌های یکسان بر روی سیستم ذخیره کنیم. از نظر پیاده‌سازی، یک پکیج چیزی جز یک شاخه یا دایرکتوری (Directory یا همان فولدر) بر روی کامپیوتر نیست.
تبلیغات
D4-mcid4
کپی لینک

Package

وجود پکیج در جاوا بسیار مفید است و نبود آن باعث بروز مشکلاتی می‌شود. همانطور که قبلا هم اشاره کردیم، در برنامه‌های بزرگ و سازمانی، تعداد کلاس‌ها حتی به هزار تا هم خواهد رسید و از آنجایی که نام فایل java. باید با نام کلاسی که به صورت public تعریف شده است یکی باشد، ممکن است با مشکلاتی رو به رو شویم. به عبارت دیگر مدیریت کلاس‌ها به دلیل زیاد بودن آن‌ها دشوار می‌شود. اجازه دهید برای درک بهتر توضیحات فوق، مثالی را برای شما یادآوری کنم. در کامپیوتر خود وارد مدیریت فایل‌ها (File Manager یا File Explorer) و بعد وارد یکی از درایو‌ها مثلا درایو C شوید. در همان جا اگر بخواهیم دو فایل با نام‌ها و پسوند‌های یکسان ایجاد کنیم، با اروری مواجه می‌شویم که می‌نویسد در این مکان فایلی با این نام وجود دارد. اما اگر مجبور باشیم که در همان درایو C دو فایل با نام‌ها و پسوند‌های یکسان داشته باشیم، تنها راه حل، ایجاد یک دایرکتوری (Folder) دیگر است، و باید یکی از فایل‌ها را در داخل فولدر جدید قرار دهیم. در این صورت با اروری مواجه نمی‌شویم. مفهوم پکیج در جاوا هم دقیقا همین است. زیرا کلاس‌هایی که ما در جاوا ایجاد می‌کنیم، همگی در یک دایرکتوری ذخیره می‌شوند (یک فایل پروژه است و همه‌ی فایل‌های برنامه در آن فایل پروژه ایجاد می‌شوند)، بنابراین فقط می‌توانیم از طریق پکیج‌ها، در یک برنامه فایل‌هایی هم نام ایجاد کنیم. استفاده از پکیج‌ها فایده‌های دیگری هم دارد. از آنجایی که بسیاری از کلاس‌هایی که افراد یا شرکت‌ها می‌نویسند، جنبه‌ی کتابخانه‌ای (Library) دارند و ممکن است توسط شرکت‌های دیگر به صورت کتابخانه استفاده شود، بهتر است نام گذاری پکیج‌ها به گونه‌ای باشد که اگر دو کلاس هم نام در دو کتابخانه‌ی مختلف وجود داشته باشد و ما بخواهیم همزمان از دو کتابخانه در برنامه‌ی خود استفاده کنیم، تداخلی از لحاظ اسم و پکیج رخ ندهد. برای همین منظور شرکت Sun پیشنهاد کرده است که شرکت‌ها برای نام گذاری پکیج‌های خود از آدرس URL همان شرکت به صورت معکوس استفاده کنند (زیرا هر آدرس URL با دیگری فرق دارد). (بعضی از مطالب فوق از کتاب احمدرضا صدیقی گرفته شده است). ابتدا ما نحوه‌ی ساخت یک پکیج را در محیط توسعه‌ی اکلیپس به شما آموزش می‌دهیم.

ابتدا بر روی پروژه‌ی خود کلیک راست کنید و از منوی  New گزینه Package را انتخاب کنید. تصویر زیر:

package

سپس با پنجره‌ی زیر مواجه می‌شوید:

package01

همانطور که در قسمت Name مشاهده می‌کنید ما نام URL شرکت را به صورت معکوس یعنی: ir.zoomit نوشته‌ایم. فلسفه‌ی معکوس نوشتن نام پکیج‌ها این است که ما باید نام پکیج‌های خود را از کل به جز بنویسیم. یعنی دامنه‌ی ir یک دامنه‌ی کلی است و خیلی از سایت‌های دیگری هستند که با دامنه‌ی ir ثبت شده‌اند. اما zoomit یک نام جزئی‌تر از ir است و فقط مختص همین شرکت است. هرچه بخواهیم نام پکیج خود را جزئی‌تر کنیم، فقط کافی است یک نقطه (.) قرار دهیم و سپس نام دیگری را بنویسیم. وقتی نقطه قرار می‌دهیم، اکلیپس به صورت خودکار داخل دایرکتوری فعلی، یک دایرکتوری دیگری با نامی که ما تعیین کرده‌ایم ایجاد می‌کند. حالا اگر در قسمت Package Explorer اکلیپس دقت کنید، در زیرشاخه‌ی src یک پکیج با نامی که ما تعیین کرده‌ایم ایجاد شده است. تصویر زیر:

package

همانطور که مشاهده می‌کنید رنگ پکیجی که ایجاد کرده‌ایم سفید است. این به این دلیل است که در داخل این پکیج هنوز کلاسی وجود ندارد. به محض ایجاد یک کلاس در این پکیج، رنگ پکیج به قهوه‌ای تغییر می‌کند. حال در داخل این پکیج یک کلاس با نام Main ایجاد کنید (در آموزش قبلی نحوه‌ی ساخت کلاس توضیح داده شده است). بعد از ساختن کلاس Main، دوباره یک کلاس دیگر با همین نام (Main) در همان پکیج (ir.zoomit) ایجاد کنید. تصویر زیر:

package

همانطور که در پنجره‌ی بالا با یک مستطیل قرمز رنگ مشخص شده است، اکلیپس به ما یک ارور را نمایش می‌دهد و امکان ساختن چنین کلاسی را به ما نمی‌دهد. زیرا در حال حاضر کلاسی با نام Main در پکیج ir.zoomit قرار دارد. نکته‌ی دیگری که باید به آن توجه کنیم این است که ما می‌توانیم در همان لحظه‌ی ساختن کلاس، پکیج خود را هم ایجاد کنیم (در تصویر بالا با یک مستطیل آبی رنگ مشخص شده است). برای اینکه بتوانیم در همین برنامه یک کلاس دیگری با نام Main ایجاد کنیم، اقدام به ساخت یک پکیج دیگر مثلا با نام com.google می‌کنیم.

نکته: در نام گذاری پکیج‌ها بهتر است همواره از حروف کوچک الفبای انگلیسی استفاده شود.

به تصویر زیر دقت کنید:

com.google

همانطور که مشاهده می‌کنید کلاسی ساخته‌ایم با نام Main، اما در پکیج com.google. در این اینجا ما ساختن پکیج و کلاس را در یک مرحله انجام داده‌ایم. (یعنی وقتی بر روی پروژه‌ی خود کلیک راست می‌کنید، از منوی New گزینه‌ی کلاس را انتخاب کنید و در همانجا نام پکیج را هم بنویسید). به Package Explorer در اکلیپس توجه کنید:

pe

همانطور که در تصویر فوق واضح است ما به وسیله‌ی پکیج‌ها در یک برنامه، دو فایل جاوا با نام‌های یکسان ایجاد کرده‌ایم (بدون دریافت هیچگونه اروری). نکته‌ی دیگری که وجود دارد این است که ما می‌توانیم در داخل یک پکیج، یک پکیج دیگر نیز ایجاد کنید. حالا می‌خواهیم در داخل پکیج com.google یک پکیج دیگری ایجاد کنیم. بنابراین چون پکیج جدید قرار است زیر مجموعه‌ی پکیج com.google باشد، باید از ادامه‌ی نام فعلی پکیج (com.google)، نام پکیج جدید (com.google.java) را انتخاب کنید. به تصویر زیر دقت کنید:

newpackage

به قسمت نام پکیج‌ها توجه کنید. من بین نام پکیج قبلی و نام پکیج جدید یک خط قرمز نازک کشیده‌ام. منظورم از کشیدن خط این بوده است که برای اینکه بخواهیم پکیجی زیر مجموعه‌ی یک پکیج دیگر باشد، باید حتما نام پکیج قبلی، در ابتدای نام پکیج جدید باشد. نام کلاس را هم دوباره Main در نظر گرفته‌ام که متوجه شوید حتی در یک پکیج هم با ایجاد پکیج‌های جدید می‌توان کلاس‌هایی با نام‌های یکسان داشت. (برای ایجاد یک پکیج در داخل یک پکیج دیگر، بر روی پکیج مورد نظر کلیک راست کرده و از منوی New گزینه‌ی Package را انتخاب کنید. یک نقطه قرار دهید و نام پکیج جدید را در ادامه‌ی نام پکیجی که نوشته شده است (بعد از نقطه)، بنویسید).

وضعیت فعلی Package Explorer را در زیر مشاهده می‌کنید:

com.google.java

حالا می‌خواهیم وضعیت پکیج‌هایی که ایجاد کرده‌ایم را در سیستم فایل مشاهده کنیم. برای این کار ابتدا از پروژه‌ی خود یک Properties می‌گیریم. برای اینکار بر روی پروژه‌ی خود کلیک راست کرده و آخرین گزینه یعنی Properties را انتخاب کنید. تصویر زیر:

properties

بعد از انتخاب گزینه‌ی مورد نظر با پنجره‌ی زیر مواجه می‌شوید و از آنجا محل Workspace (محل ذخیره سازی پروژه بر روی هارد) پروژه‌ی خود را نگاه کنید و به آدرس مورد نظر در سیستم فایل بروید. تصویر زیر:

workspace

Location محل ذخیره سازی پروژه بر روی سیستم فایل است. بعد از اینکه وارد محل آدرس مورد نظر شدید، با تصویر زیر مواجه می‌شوید.

src

اگر از محیط توسعه‌ی اکلیپس استفاده می‌کنید، نحوه‌ی چیدمان فولدر‌های موجود در دایرکتوری پروژه به صورتی است که در تصویر بالا مشاهده می‌کنید. اگر دقت کرده باشید تمام کلاس‌ها و پکیج‌هایی که در اکلیپس ایجاد کردیم، در زیر شاخه‌ی src بود (اگر دقت نکردید، دقت کنید!!!). بنابراین در اینجا هم برای دسترسی به پکیج‌ها و کلاس‌های خود وارد دایرکتوری src می‌شویم. تصویر زیر:

com

همانطور که مشاهده می‌کنید دو پکیجی که در شاخه‌ی اصلی (Root) فایل src ایجاد کرده‌ایم وجود دارد. همانطور که دیدید من بعد از نام دامنه (ir و com) یک نقطه قرار دادم، نقطه باعث می‌شود داخل دایرکتوری مورد نظر، یک فولدر دیگر با نامی که ما انتخاب می‌کنیم ایجاد شود. مثلا پکیج ir.zoomit، ابتدا فولدر ir ساخته می‌شود و سپس داخل فولدر ir، فولدری دیگر با نام zoomit ساخته می‌شود و بعد هم کلاسی که ایجاد کردیم (Main) داخل دایرکتوری zoomit قرار می‌گیرد. به تصویر زیر دقت کنید:

src

شماره‌ی 1 شاخه‌ی اصلی است. ابتدا دامنه را نوشته‌ایم (شماره‌ی 2)، یک نقطه قرار داده‌ایم و نام دیگری را نوشته‌ایم (شماره‌ی 3) و در آخر هم کلاس Main در آخرین فولدر ایجاد شده است (شماره‌ی 4).

همانطور که می‌دانید وقتی برنامه‌های جاوا کامپایل می‌شوند، کد‌های برنامه به بایت کد تبدیل می‌شوند و پسوند فایل هم از java. به class. تغییر می‌کند. اکلیپس فایل‌های کامپایل شده را در داخل فولدر bin قرار می‌دهد (به Location پروژه‌ی خود مراجعه کنید تا فولدر bin را مشاهده کنید). نکته‌ای که است در داخل فولدر bin هم تمام پکیج‌هایی که ما ایجاد کرده‌ایم (دقیقا به همان صورت) ایجاد می‌شود فقط پسوند فایل‌های برنامه عوض می‌شود.

تا اینجای کار ما با مفهوم پکیج آشنا شده‌ایم و نحوه‌ی ایجاد آن را هم یاد گرفته‌ایم. نکته‌ای که در کد نویسی باید به آن توجه کنید این است که اگر کلاس ما داخل پکیجی قرار دارد، در خط اول برنامه باید با استفاده از کلید واژه‌ی package نام پکیج را مشخص کنیم. مثلا کد کلاسی که در پکیج ir.zoomit قرار دارد باید به صورت زیر باشد:

package ir.zoomit;public class Main {}

اگر برای کلاسی که ایجاد می‌کنیم، پکیجی در نظر نگیریم، اکلیپس به صورت خودکار پکیجی با نام default package در نظر می‌گیرد. البته این default package اصلا وجود خارجی ندارد و فقط در Package explorer در محیط اکلیپس نشان داده می‌شود. تصویر زیر:

default package

حالا فرض کنید ما می‌خواهیم در کلاسی که در پکیج ir.zoomit قرار دارد، از کلاسی استفاده کنیم که در پکیج com.google است. ابتدا نام کلاس‌ها را تغییر می‌دهیم. برای تغییر نام کلاس، ابتدا کلاس مورد نظر را انتخاب کنید و سپس کلیک راست کنید. از منوی باز شده، ابتدا گزینه‌ی Refactor و سپس Rename را انتخاب کنید. تصویر زیر:

Refactor

نام کلاس‌ها در زیر تغییر کرده است و کلاسی که در شاخه‌ی روت (در داخل default package ایجاد کرده بودیم را حذف کردیم).

new-package

ابتدا کلاس Main که در پکیج ir.zoomit قرار دارد را باز کنید و متد main را هم در آن بنویسید. کد زیر:

package ir.zoomit;public class Main { public static void main(String[] args) { }}

حالا ما می‌خواهیم در این کلاس از کلاس SecondClass که در پکیج com.google.java است یک شی ایجاد کنیم. در این صورت ما حتما باید به صورت زیر از کلاس SecondClass استفاده کنیم:

package ir.zoomit;public class Main { public static void main(String[] args) { com.google.java.SecondClass obj = new com.google.java.SecondClass(); }}

همانطور که مشاهده می‌کنید ما دقیقا باید نام کلاس را به همراه نام پکیج آن بیاوریم. زیرا SecondClass در یک پکیج دیگر قرار دارد و برای استفاده از آن حتما باید نام پکیج در ابتدای نام کلاس (SecondClass) آورده شود. اما همانطور که در کد مشاهده می‌کنید ما هر بار که بخواهیم از SecondClass استفاده کنیم باید نام پکیج را دقیقا بنویسیم که این کار هم سخت و زمان‌بر است و هم باعث شلوغ شدن کد‌های کلاس ما می‌شود. اما نگران نباشید؛ جاوا برای اینکار راه حلی را اندیشیده است. ما می‌توانیم از دستور import برای وارد کردن (import) کردن پکیج‌ها در کلاس خود استفاده کنیم. در این صورت ما یک بار پکیج‌ را import می‌کنیم و در طول برنامه هر چند بار که بخواهیم از کلاس مورد نظر بدون نوشتن نام کامل پکیج در ابتدای نام کلاس استفاده می‌کنیم. به کد زیر توجه کنید:

package ir.zoomit;import com.google.java.SecondClass;public class Main { public static void main(String[] args) { SecondClass obj = new SecondClass(); }}

دستور import را باید در ابتدای فایل برنامه بعد از معرفی پکیج قرار دهید. (یعنی اگر فایل برنامه در داخل پکیج است، در خط اول ابتدا پکیج آورده می‌شود و در خط‌های بعدی import‌ها نوشته می‌شوند. اما اگر پکیجی وجود نداشته باشد، خط اول برای import‌ها می‌شود). منظور این است که اگر import‌ها را داخل کلاس یا متد بنویسید با خطای کامپایل مواجه می‌شوید. در کد بالا هم ما بعد از معرفی پکیج، پکیج مورد نظر را import کرده‌ایم و در طول برنامه (همانطور که مشخص است) فقط از اسم کلاس استفاده کرده‌ایم (بدون آوردن نام پکیج در ابتدای آن).

حالا در داخل پکیج com.google.java یک کلاس دیگر با نام ThirdClass ایجاد کنید. تصویر زیر:

ThirdClass

فرض کنید بخواهیم از این دو کلاس که در پکیج com.google.java ساخته شده‌اند، در برنامه‌ی خود استفاده کنیم. بنابراین یک import دیگر به برنامه اضافه می‌شود (برای مشخص کردن کلاس ThirdClass). کد زیر:

package ir.zoomit;import com.google.java.SecondClass;import com.google.java.ThirdClass;public class Main { public static void main(String[] args) { SecondClass obj = new SecondClass(); ThirdClass obj1 = new ThirdClass(); }}

همانطور که مشاهده می‌کنید هر دو کلاس ما برای یک پکیج هستند، اما دو دستور import نوشته‌ایم. در این گونه مواقع می‌توانیم یک دستور import بنویسیم و بجای آوردن نام تک تک کلاس‌ها، از علامت * استفاده کنیم. * به این معنی است که تمام کلاس‌هایی که در پکیج com.google.java قرار دارد را import کند. به کد زیر توجه کنید:

package ir.zoomit;import com.google.java.*;public class Main { public static void main(String[] args) { SecondClass obj = new SecondClass(); ThirdClass obj1 = new ThirdClass(); }}

همانطور که می‌بینید ما یک بار پکیج را import کرده‌ایم و از تمام کلاس‌های داخل آن در برنامه‌ی خود استفاده کرده‌ایم. در اینجا یک نکته‌ی دیگری وجود دارد که باید به آن اشاره کنیم. ابتدا در پکیج com.google نه پکیج com.google.java!!! یک کلاس دیگری با نام Test ایجاد کنید. تصویر زیر:

TestClass

به کد زیر توجه کنید:

package ir.zoomit;import com.google.java.*;public class Main { public static void main(String[] args) { SecondClass obj = new SecondClass(); ThirdClass obj1 = new ThirdClass(); Test t = new Test(); }}

کد بالا با خطای کامپایل مواجه می‌شود. چرا؟ ما که تمام کلاس‌های com.google.java را import کرده‌ایم، پس چرا با خطای کامپایل مواجه می‌شویم؟ علت این است که کلاس‌های پکیج com.google.java را import کرده‌ایم، پس چرا ایراد می‌گیرد؟ درست است که com.google.java زیر مجموعه‌ی پکیج com.google است، اما برای استفاده از کلاس‌هایی که در پکیج com.google قرار دارند، باید جدا کلاس‌های com.google را import کنیم. کد زیر:

package ir.zoomit;import com.google.Test;import com.google.java.*;public class Main { public static void main(String[] args) { SecondClass obj = new SecondClass(); ThirdClass obj1 = new ThirdClass(); Test t = new Test(); }}

کد بالا صحیح است.

حالا فرض کنید ما دو کلاس هم نام در دو پکیج مختلف داریم. در حال حاضر ما کلاسی تحت عنوان Test در پکیج com.google وجود دارد. حالا یک کلاس دیگر با همین نام در پکیج com.google.java ایجاد کنید. تصویر زیر:

TwoTest

حالا ما می‌خواهیم از این دو کلاس Test در کلاس Main استفاده کنید. در اینصورت ما فقط باید یکی از کلاس‌ها را import کنیم و کلاس دیگر را به همراه نام کامل آن در کلاس استفاده کنیم. کد زیر:

package ir.zoomit;import com.google.Test;public class Main { public static void main(String[] args) { Test test = new Test(); com.google.java.Test test2 = new com.google.java.Test(); }}

همانطور که مشاهده می‌کنید کلاسی که در پکیج com.google قرار دارد را import کرده‌ایم، اما کلاسی که در پکیج com.google.java قرار دارد را به همراه نام پکیج آن در برنامه نوشته ایم.

کپی لینک

java.lang

کلاس‌های استاندارد جاوا در پکیجی با نام java تعریف شده‌اند و عملیات اصلی در زبان جاوا نیز در کلاس‌هایی در پکیج دیگری با نام lang (که مخفف language است) داخل java تعریف شده است. به عبارت دیگر کلاس‌های پایه‌ی جاوا در پکیجی با نام java.lang تعریف شده‌اند و برای استفاده از کلاس‌هایی که در این پکیج قرار دارند، نیازی به import کردن آن‌ها ندارید. این بدین معناست که تمام کلاس‌هایی که در پکیج java.lang قرار دارند به صورت ضمنی در تمام کلاس‌های جاوا import می‌شوند. کلاس String، کلاس Math، کلاس System از جمله کلاس‌هایی هستند که در پکیج java.lang قرار دارند.

یک نکته‌ی مهمی که وجود دارد این است که import‌ها فقط در فایل java. قرار دارند و وقتی که برنامه کامپایل و فایل class. تولید می‌شود، دیگر خبری از import‌ها نیست. یعنی کامپایلر هنگام کامپایل کردن برنامه، به کمک import‌ها، کلاس‌هایی که در برنامه استفاده شده است را متوجه می‌شود و اسم کلاس‌ها را با نام کامل آن‌ها جایگزین می‌کند (یعنی نام پکیج + نام کلاس). همچنین بهتر است که import‌های اضافی را از برنامه پاک کنید. هرچند هیچ تاثیری در اجرای برنامه ندارد (البته شاید کمی تاثیر در پروسه‌ی کامپایل داشته باشد) اما در بعضی از منابع آموزشی گفته می‌شود که وجود import‌های اضافی، گاهی باعث بروز باگ در برنامه می‌شود. پس بهتر است که import‌های خود را سازماندهی کنید. اگر از محیط توسعه‌ی اکلیپس استفاده می‌کنید، با نگه داشتن دکمه‌های ترکیبی Ctrl + Shift + O می‌توانید import‌های خودر را سازماندهی (Organize) کنید.

کپی لینک

سطوح دسترسی در جاوا

در جاوا می‌توانیم برای کلاس‌ها، متغیر‌ها و متد‌ها سطوح دسترسی (Access Level)، با استفاده از کلید واژه‌ی خاصی مشخص کنیم. به این کلید واژه‌های خاص، تعیین کننده‌ی سطوح (Access Modifier یا Access Specifier) گفته می‌شود. این سه کلید واژه عبارت اند از: public, private, protected که در این جلسه فقط public و private را بررسی می‌کنیم (protected را در مبحث ارث بری بررسی می‌کنیم). سطوح دسترسی مفهومی بسیار راحتی دارند. به کد زیر توجه کنید:

package ir.zoomit;public class Main { private int number = 0; public static void main(String[] args) { }}

در کد بالا متغیری از نوع عدد صحیح (number) با مقدار 0 تعریف کرده‌ایم. اگر به ابتدای تعریف متغیر توجه کنید، این متغیر به صورت private تعریف شده است. وقتی یک فیلد یا متدی در یک کلاس به صورت private تعریف شود، آن فیلد و متد فقط در همان کلاس قابل استفاده است و در جای دیگر برنامه به آن متغیر و متد دسترسی نداریم. به عنوان مثال اگر ما از روی کلاس Main آبجکتی ایجاد کنیم تا به وسیله‌ی آن آبجکت بخواهیم به متد‌ها و متغیر‌های کلاس Main دسترسی پیدا کنیم، اجازه‌ی دسترسی به متغیر number را نداریم و اگر این کار را انجام دهیم با خطای کامپایل مواجه می‌شویم. کلید واژه‌ی public دقیقا نقطه‌ی مقابل private است. یعنی اگر ما فیلد یا متدی را به صورت public یا عمومی تعریف کنیم، در هر جایی از برنامه مستقیما به آن متد یا فیلد دسترسی داریم. سطح دسترسی دیگری نیز وجود دارد که کلید واژه‌ی خاصی ندارد. یعنی در اصل اگر ما یک متد یا فیلدی را بدون تعریف کردن حق دسترسی برای آن، در برنامه‌ی خود تعریف کنیم، سطح دسترسی آن متد یا فیلد اصطلاحا Package Access است. یعنی اگر مثلا یک متد در یک کلاس تعریف شود، فقط کلاس‌هایی که در پکیج مشترک با آن متد هستند می‌توانند به آن متد دسترسی داشته باشند، در غیر اینصورت دسترسی ندارند.

کپی لینک

سطوح دسترسی کلاس‌ها

همانطور که می‌دانید برای نوشتن یک برنامه‌ی جاوا، ابتدا باید یک فایل متنی که پسوند آن java.است را انتخاب کنیم. مسلما هر برنامه‌ی جاوا کم کم نیاز به یک کلاس و یک متد (متد main) دارد تا اجرا شود. همانطور که برنامه‌ی ما می‌تواند شامل چندین متد باشد، همانطور هم می‌تواند شامل چندید کلاس باشد، اما با این شرط که فقط یک کلاس می‌تواند حق دسترسی عمومی یا public داشته باشد و نام فایل برنامه هم (که پسوند java.) دارد باید دقیقا همان نام کلاسی باشد که به صورت public تعریف شده است. کلاس‌های دیگری که ایجاد می‌کنیم باید به صورت Package Access تعریف کنیم (مسلما کلاس‌ها نمی‌توانند private باشند، چون در این صورت یک فایل اضافی در برنامه هستند. چون هیچ گونه دسترسی‌ به آن‌ها نداریم).

می‌خواهیم در محیط اکلیپس یک کلاس در پکیج ir.zoomit ایجاد کنیم. بنابراین بر روی پکیج مورد نظر کلیک راست کنید، از منوی New گزینه‌ی Class را انتخاب کنید. به تصویر زیر توجه کنید:

modifie

همانطور که در تصویر فوق با یک مستطیل قرمز رنگ مشخص شده است، در قسمت Modifiers، سطح دسترسی package را انتخاب کرده‌ایم. بنابراین کلاس ما به صورت زیر است:

package ir.zoomit;class Test {}

همانطور که مشاهده می‌کنید سطح دسترسی‌ مشخص نشده است (یعنی Package Access است).

در آموزش بعدی با مفهوم Encapsulation در برنامه نویسی شی گرا آشنا می‌شوید.

کپی لینک

لینکدین

ما در شبکه‌ی اجتماعی لینکدین گروهی ایجاد کرده‌ایم با نام آموزش برنامه نویسی جاوا در زومیت. لطفا در این گروه عضو شوید و جدا از ارسال نظرات در سایت زومیت، در آنجا هم نظرات خود را بیان کنید تا کمبود‌های این دوره‌ی آموزشی رفع شود. لطفا در مورد حجم آموزش‌ها نظر دهید.

کپی لینک

برای مشاهده‌ی کامل مطالب آموزش جاوا می‌توانید بر روی صفحه‌ی آموزش جاوا کلیک کنید.

مقاله رو دوست داشتی؟
نظرت چیه؟
تبلیغات
D5-b3IranServer
داغ‌ترین مطالب روز
کنترل ذهن
روانشناسی تاریک چیست؟ هرآنچه باید بدانید

روانشناسی تاریک استفاده از دستکاری ذهن، متقاعدسازی و اجبار به صورتی است که به مخاطب آسیب می‌زند. با مبحث روانشناسی تاریک بیشتر آشنا شوید.

18
حدود 19 ساعت قبل
سبک ترین و خوش دست ترین گوشی های سامسونگ
سبک ترین گوشی های سامسونگ [بهار و تابستان ۱۴۰۴]

چه گوشی‌‌هایی با وزن مناسب بهترین عملکرد را دارند؟ در این مقاله با سبک‌ترین گوشی‌های سامسونگ در بازار ایران آشنا خواهید شد.

28
2 روز قبل
صفحه تماس گوشی سامسونگ
آموزش ضبط مکالمه در گوشی سامسونگ (روش جدید بدون نیاز به تغییر منطقه)

آیا به ضبط مکالمه در گوشی سامسونگ خود نیاز دارید؟ روش‌ ساده‌ای برای انجام این‌ کار روی گوشی‌های سامسونگ وجود دارد.

50
حدود 18 ساعت قبل
بهترین گوشی های زیر ۲۰ میلیون تومان سامسونگ
بهترین گوشی های سامسونگ تا ۲۰ میلیون تومان [بهار ۱۴۰۴]

در بازه‌ی قیمتی زیر ۲۰ میلیون تومان کدام گوشی‌های سامسونگ ارزش خرید بالاتری دارند؟ در این راهنمای خرید برای انتخاب بهتر به‌ شما کمک خواهیم کرد.

69
2 روز قبل
خشکی‌های آفریقای جنوبی
دانشمندان سرانجام فهمیده‌اند چرا ارتفاع زمین در آفریقای جنوبی هر سال بالا می‌رود

مطالعه‌ی جدید برپایه GPS نشان می‌دهد که آفریقای جنوبی بین سال‌های ۲۰۱۲ تا ۲۰۲۰ به‌طور پیوسته بالا آمده و خشکسالی عامل احتمالی آن است.

22
1 روز قبل
چگونه NFT بسازیم
چگونه NFT بسازیم و بفروشیم؟

شما می‌توانید با ساخت NFT از آثار هنری خود در شبکه‌ی بلاک چین، نه‌تنها آن‌ها را جاودانه کنید، بلکه از فروش آن‌ها درآمد داشته باشید.

28
حدود 21 ساعت قبل
وام قرض‌الحسنه فرزندآوری
شرایط و ثبت نام وام فرزند آوری ۱۴۰۴

در این مطلب شرایط، مدارک، مراحل و همه آنچه باید درباره وام فرزند آوری در سال ۱۴۰۴ بدانید، برایتان توضیح داده شده است.

109
حدود 24 ساعت قبل

نظرات

تبلیغات
D7-zoomitproduct
آخرین ویدیوها
پخش از رسانه
ضبط مکالمه گوشی سامسونگ
فعال‌سازی ضبط مکالمه سامسونگ؛ آموزش صفر تا صد
00:13:56
عکسی از وان یو آی ۸ در گوشی اس ۲۵ اولترا
نگاهی به تمام ویژگی‌های جذاب وان یو آی ۸
00:08:02
آب میوا
نمایشگاه آگروفود؛ مصاحبه با مدیرعامل برند میوا
00:15:22
وقتی ناتینگ تجربه می‌فروشه! بررسی ناتینگ فون ۳ای پرو
وقتی ناتینگ تجربه می‌فروشه! بررسی ناتینگ فون ۳ای پرو
00:13:55
باریکی به چه قیمتی؟ بررسی گلکسی اس۲۵ اج
باریکی به چه قیمتی؟ بررسی گلکسی اس۲۵ اج
00:11:09
مالیات در کمین است
چرا کسب‌وکارهای محلی به حاشیه رانده شدند؟
00:56:01
فروش آنلاین لباس‌های ایرانی اصیل در بانی‌مد
بانی‌مد میزبان بیش از هزار برند ایرانی اصیل
00:45:24
عکس بهزاد در کنار تبلت‌های شیائومی پد ۷ و پد ۷ پرو
آنباکس تبلت‌های شیائومی؛ پد ۷ و پد ۷ پرو
00:12:19
رویداد گوگل I/O در ۱۸ دقیقه! از ترجمه فارسی تا عینک واقعیت ترکیبی 🥽✨
رویداد گوگل I/O در ۱۸ دقیقه!
00:18:44
زومکست با جاب ویژن
هوش مصنوعی، جایگزین نیروی انسانی؟
01:04:35
عکس گلکسی اس ۲۵ اج در تمام رنگ‌ها
آنباکس گلکسی اس ۲۵ اج؛ باریک و سبک و دوست داشتنی
00:12:54
عکس تبلت‌های گلکسی تب S10 FE و گلکسی تب S10 FE Plus
بررسی گلکسی تب S10 FE و FE پلاس
00:14:14
زومکست فضاهای اشتراکی
گفتگو زومیت با مدیران انجمن فضاهای اشتراکی
00:44:45
یک شب دو گوشی؛ گلکسی اس۲۵ اج و اکسپریا ۱ مارک ۷ معرفی شد
یک شب دو گوشی؛ گلکسی اس۲۵ اج و اکسپریا ۱ مارک ۷ معرفی شد
00:07:40
عکس بهزاد در حال ساختن اپل اکانت
آموزش جامع ساخت اپل آیدی؛ قدم به قدم
00:25:22
پادشاه جدید عکاسی موبایل؟ بررسی شیائومی ۱۵ اولترا 🐲📸
پادشاه جدید عکاسی موبایل؟ بررسی شیائومی ۱۵ اولترا 🐲📸
00:15:17
عکس سعیده اسلامیه در کنار سحر بختیاری از دیجی‌کالا
صفر تا صد دیجی‌کالا ادز؛ مصاحبه با سحر بختیاری
00:41:20
بررسی بلندمدت آیفون ۱۶ پرو مکس 🤑 با این قیمت ارزش خرید داره؟
بررسی بلندمدت آیفون ۱۶ پرو مکس 🤑
00:09:06
تغییرات باورنکردنی در راه اندروید! 🤯🔥
تغییرات باورنکردنی در راه اندروید! 🤯🔥
00:14:52
کاور زومکست اسنپ فود
گفتگو مفصل زومیت با رئیس هیأت مدیره اسنپ‌فود
00:55:58
بررسی لپ‌تاپ دانشجویی Asus Vivobook S14
بهترین لپ‌تاپ دانشجویی وجود ندار... بررسی Asus Vivobook S14
00:11:41
عکس گوشی‌های گلکسی A26 و A36 سامسونگ در کنارهم
بررسی گوشی‌های گلکسی A26 و A36 سامسونگ
00:16:53
گفتگو زومیت با مدیرعامل فیلمنت
گفتگو با مدیرعامل فیلم‌نت؛ از نتفلیکس بهتر خواهیم شد!
00:57:47
تصویر ماشین‌ لباسشویی LG WT1310YJ
خشک‌شویی رو بیار خونه‌! ماشین لباس‌شویی Wash Tower LG
00:05:50
جنجالی‌ترین ویژگی ویندوز ۱۱؛ نگاه نزدیک به Recall مایکروسافت 👀
جنجالی‌ترین ویژگی ویندوز ۱۱؛ نگاه نزدیک به Recall مایکروسافت
00:13:09
عکس گوشی شیائومی ۱۵ اولترا در کنار جعبه دستگاه
آنباکس و نگاه نزدیک شیائومی ۱۵ اولترا
00:12:44
عکس گوشی آیفون ۱۶ ای در دست
بررسی آیفون ۱۶ ای؛ ارزون‌ترین آیفون سال
00:13:37
پرچمدار میان‌رده‌های سامسونگ؛ بررسی گلکسی A56
پرچمدار میان‌رده‌های سامسونگ؛ بررسی گلکسی A56
00:12:58
کولر بادی یا واترکولینگ؟ بهترین راه خنک کردن پردازنده کدومه؟ 🌡️
کولر بادی یا واترکولینگ؟ بهترین راه خنک کردن پردازنده کدومه؟
00:16:44
عکس بهزاد با آیکون‌های گرد شده iOS19
iOS19 قراره چه فرقی کنه؟ نگاهی به تمام تغییرات احتمالی
00:10:59
اوضاع عجیب سامسونگ! 💩
اوضاع عجیب سامسونگ! 💩
00:07:04
آیفون ۱۷ این شکلیه؟
سری آیفون ۱۷ اینجاست! 🔥 داغ داغ از پرینترسه‌بعدی درومده
00:17:17
زومکست مصاحبه با معاون ارشد فروشگاه مرکزی لنوو و مدیرعامل شرکت الماس پهنه رایانه پایتخت
لنوو در ایران؛ همه‌چیز درباره لپ‌تاپ‌های لنوو و خدمات آن
00:17:54
چرا نباید گلکسی اس ۲۵ اولترا بخریم؟ ⛔
چرا نباید گلکسی اس ۲۵ اولترا بخریم؟ ⛔
00:27:52
جعبه گشایی آیفون ۱۶ ای اپل
ارزون‌ترین آیفون اپل اینجاست! 😏 جعبه‌گشایی iPhone 16e
00:12:01
مقایسه دوربین بزرگ زومیت
بزرگ‌ترین مقایسه دوربین زومیت 🔥 کی حرف آخرو می‌زنه؟
00:16:44
زوم کست آچاره
آچاره؛ داستان استارتاپی که همه کارات رو انجام می‌ده!
00:42:40
تبلت یا لپ‌تاپ؛ کدوم برای شما مناسب‌تره؟ 🏆
تبلت یا لپ‌تاپ؛ کدوم برای شما مناسب‌تره؟ 🏆
00:26:47
با Kling AI ویدیو بساز
آموزش جامع ساخت ویدیو و عکس با هوش مصنوعی Kling AI
00:31:26
آموزش کامل و جامع نصب ویندوز ۱۱ + پارتیشن‌بندی و ...
آموزش کامل و جامع نصب ویندوز ۱۱ + پارتیشن‌بندی و ...
00:38:14
LG QNED86 TV
بهترین انتخاب برای گیم و فیلم! بررسی تلویزیون ۸۶ اینچی ال‌جی
00:12:39
عکس ابزارهای ذخیره‌سازی فایل از قدیم تا جدید
سفر شگفت‌انگیز دنیای ذخیره‌سازی اطلاعات؛ از گذشته تا امروز!
00:14:56
عکس وان‌پلاس ۱۳ رنگ مشکی در دست
وان پلاس ۱۳؛ ارزشمندتر از گلکسی اس ۲۵ اولترا؟
00:16:13
عکس لوح نقره‌ای یوتیوب زومیت در ابعاد جدید
آنباکس لوح نقره‌ای یوتیوب زومیت به بهانه نوروز ۱۴۰۴
00:23:39
عکس یخچال MoodUp ال‌جی
این یخچال با روح و روانت بازی می‌کنه 🧊
00:05:48
بررسی هدفون سونی WF-1000XM5
بررسی هدفون توگوشی XM5 سونی
00:10:23
عکس گوشی ردمی نوت ۱۴ پرو و ردمی نوت ۱۴ پرو پلاس
بررسی ردمی نوت ۱۴ پرو و ۱۴ پرو پلاس 5G
00:13:31
زومکست با مدیرعامل جاباما
گفتگو با مدیرعامل جاباما؛ فرصتی برای دیدن ناشناخته‌های ایران
00:38:48
دیگه گلس نخر در حال شکستن یک گلس
شیشه‌های ضد خش گوشی چطوری ساخته می‌شن؟
00:13:15
نگاه نزدیک به ردمی نوت ۱۴ پرو پلاس و ردمی نوت ۱۴ پرو شیائومی
نگاه نزدیک به ردمی نوت ۱۴ پرو پلاس و ردمی نوت ۱۴ پرو شیائومی
00:14:33
58 مطلب
لوگوی اندروید
ترفند ها و آموزش های اندروید در مجموعه مطالعاتی آموزش اندروید با برترین و کاربردی‌ ترین ترفند های اندروید آشنا خواهید شد و صفر تا صد تبلت و گوشی اندرویدی خود را آموزش می‌بینید.
14 مطلب
طرح مفهومی سخت‌افزار
شیرجه در سخت افزار با مقالات سخت‌افزاری زومیت در دریای هیجان‌انگیز سخت‌افزار از CPU و GPU تا هوش مصنوعی و شرکت‌های فناوری پیشرو شیرجه بزنید.
18 مطلب
پیکان زرد در کنار کنسول گیم‌بوی و نوکیا 6600
ماشین زمان با مقالات «ماشین زمان» به گذشته دنیای فناوری سفر کنید و همراه ما محصولات و تکنولوژی‌های نوستالژیک را مرور کنید.
47 مطلب
کره لاس وگاس درکنار شاتل فضایی
مهندسی بی‌نهایت داستان ساخت پیچیده‌ترین و خلاقانه‌ترین سازه‌های مهندسی دنیا، از آسمان‌خراش‌های بلند تا شاتل‌های فضایی را در بخش مهندسی بی‌نهایت دنبال کنید.
42 مطلب
کالکشن بیوگرافی
بیوگرافی بزرگان علم و فناوری با زندگی و دستاوردهای استادان نوآوری و شکل‌دهندگان دنیای علم و تکنولوژی آشنا شوید.

مقایسه قیمت و مشخصات 🛒

پنل جلو و پشت گوشی موبایل گلکسی A36 سامسونگ ارغوانی / Samsung Galaxy A36پنل جلو و پشت گوشی موبایل گلکسی A36 سامسونگ ارغوانی / Samsung Galaxy A36
3.9
گلکسی A36 سامسونگ

از22,042,200تومان

پنل جلو و پشت گوشی موبایل گلکسی A36 سامسونگ سبز نعنایی / Samsung Galaxy A36پنل جلو و پشت گوشی موبایل گلکسی A36 سامسونگ سبز نعنایی / Samsung Galaxy A36
3.6
گلکسی A26 سامسونگ

از17,244,400تومان

پنل جلو و پشت گوشی موبایل گلکسی A56 سامسونگ زیتونی / Samsung Galaxy A56پنل جلو و پشت گوشی موبایل گلکسی A56 سامسونگ زیتونی / Samsung Galaxy A56
3.8
گلکسی A56 سامسونگ

از26,926,600تومان

پنل جلو و پشت گوشی موبایل پوکو X7 شیائومی مشکی و زرد / Xiaomi Poco X7پنل جلو و پشت گوشی موبایل پوکو X7 شیائومی مشکی و زرد / Xiaomi Poco X7
4
پوکو X7 شیائومی

از20,388,000تومان

پنل جلو و پشت گوشی موبایل پوکو X7 پرو شیائومی مشکی و زرد / Xiaomi Poco X7 Proپنل جلو و پشت گوشی موبایل پوکو X7 پرو شیائومی مشکی و زرد / Xiaomi Poco X7 Pro
4.7
پوکو X7 پرو شیائومی

از25,899,000تومان

پنل جلو و پشت گوشی موبایل گلکسی اس 25 سامسونگ سرمه ای / Samsung Galaxy S25پنل جلو و پشت گوشی موبایل گلکسی اس 25 سامسونگ سرمه ای / Samsung Galaxy S25
4.3
گلکسی اس 25 سامسونگ

از102,000,000تومان

پنل جلو و پشت گوشی موبایل آیفون 16 اپل آبی / Apple iPhone 16پنل جلو و پشت گوشی موبایل آیفون 16 اپل آبی / Apple iPhone 16
3.6
آیفون 16 اپل

از60,691,000تومان

پنل جلو و پشت گوشی موبایل آیفون 16 پرو مکس اپل مشکی / Apple iPhone 16 Pro Maxپنل جلو و پشت گوشی موبایل آیفون 16 پرو مکس اپل مشکی / Apple iPhone 16 Pro Max
3.7
آیفون 16 پرو مکس اپل

از99,450,000تومان

پنل جلو و پشت گوشی موبایل آیفون 16 پرو اپل بژ / Apple iPhone 16 Proپنل جلو و پشت گوشی موبایل آیفون 16 پرو اپل بژ / Apple iPhone 16 Pro
4.4
آیفون 16 پرو اپل

از77,770,000تومان

پنل جلو و پشت گوشی موبایل آیفون 16 پلاس اپل صورتی / Apple iPhone 16 Plusپنل جلو و پشت گوشی موبایل آیفون 16 پلاس اپل صورتی / Apple iPhone 16 Plus
3.6
آیفون 16 پلاس اپل

از71,060,000تومان

کنسول بازی پلی استیشن 5 پرو سونی / Sony PlayStation 5 Proکنسول بازی پلی استیشن 5 پرو سونی / Sony PlayStation 5 Pro
4.1
اپل ایرپادز 4 به همراه کیساپل ایرپادز 4 به همراه کیس
3
اپل ایرپاد 4

از9,290,000تومان

پنل جلو و پشت گوشی موبایل گلکسی A55 سامسونگ آبی روشن / Samsung Galaxy A55پنل جلو و پشت گوشی موبایل گلکسی A55 سامسونگ آبی روشن / Samsung Galaxy A55
4.2
گلکسی A55 سامسونگ

از24,540,000تومان

پنل جلو و پشت گوشی موبایل گلکسی A15 سامسونگ سرمه ای تیره / Samsung Galaxy A15پنل جلو و پشت گوشی موبایل گلکسی A15 سامسونگ سرمه ای تیره / Samsung Galaxy A15
4.4
گلکسی A15 سامسونگ

از12,500,000تومان

پنل جلو و پشت گوشی موبایل پوکو X6 پرو شیائومی مشکی / Xiaomi Poco X6 Proپنل جلو و پشت گوشی موبایل پوکو X6 پرو شیائومی مشکی / Xiaomi Poco X6 Pro
4.3
پوکو X6 پرو شیائومی

از21,989,000تومان

پنل جلو و پشت گوشی موبایل پوکو X6 شیائومی سفید / Xiaomi Poco X6پنل جلو و پشت گوشی موبایل پوکو X6 شیائومی سفید / Xiaomi Poco X6
4
پوکو X6 شیائومی

از22,769,000تومان

پنل جلو و پشت گوشی موبایل پوکو F6 شیائومی تیتانیوم / Xiaomi Poco F6پنل جلو و پشت گوشی موبایل پوکو F6 شیائومی تیتانیوم / Xiaomi Poco F6
4.6
پوکو F6 شیائومی

از28,999,000تومان

پنل جلو و پشت گوشی موبایل پوکو F6 پرو شیائومی مشکی / Xiaomi Poco F6 Proپنل جلو و پشت گوشی موبایل پوکو F6 پرو شیائومی مشکی / Xiaomi Poco F6 Pro
4.5
پوکو F6 پرو شیائومی

از38,000,000تومان

گوشی موبایل گلکسی زد فولد 6 سامسونگ صورتی / Samsung Galaxy Z Fold6گوشی موبایل گلکسی زد فولد 6 سامسونگ صورتی / Samsung Galaxy Z Fold6
4.2
پنل جلو و پشت گوشی موبایل گلکسی A35 سامسونگ بنفش روشن / Samsung Galaxy A35پنل جلو و پشت گوشی موبایل گلکسی A35 سامسونگ بنفش روشن / Samsung Galaxy A35
4.3
گلکسی A35 سامسونگ

از21,870,000تومان

پنل جلو و پشت تبلت آیپد پرو 13 اپل نسخه 2024 مشکی / Apple iPad Pro 13 2024پنل جلو و پشت تبلت آیپد پرو 13 اپل نسخه 2024 مشکی / Apple iPad Pro 13 2024
3.9
موبایل آیفون 13 اپل / Apple iPhone 13موبایل آیفون 13 اپل / Apple iPhone 13
4.1
آیفون 13 اپل

از42,330,000تومان

گوشی موبایل ردمی نوت 13 پرو شیائومی / Xiaomi Redmi Note 13 Pro سفیدگوشی موبایل ردمی نوت 13 پرو شیائومی / Xiaomi Redmi Note 13 Pro سفید
4.4
پنل جلو و پشت گوشی موبایل گلکسی اس 24 سامسونگ زرد / Samsung Galaxy S24پنل جلو و پشت گوشی موبایل گلکسی اس 24 سامسونگ زرد / Samsung Galaxy S24
4.4
گلکسی اس 24 سامسونگ

از78,478,800تومان

موبایل آیفون 13 پرو مکس اپل آبی / APPLE IPHONE 13 PRO MAX Sierra blueموبایل آیفون 13 پرو مکس اپل آبی / APPLE IPHONE 13 PRO MAX Sierra blue
3.5
آیفون 13 پرو مکس اپل

از70,970,970تومان

گوشی آیفون 14 پرو مکس رنگ بنفش تیرهگوشی آیفون 14 پرو مکس رنگ بنفش تیره
3.6
آیفون 14 پرو مکس اپل

از71,910,000تومان

موبایل آیفون 12 اپل مشکی / Apple iPhone 12 blackموبایل آیفون 12 اپل مشکی / Apple iPhone 12 black
4
آیفون 12 اپل

از39,435,000تومان

گوشی موبایل آیفون 13 پرو اپل / Apple iPhone 13 Pro آبیگوشی موبایل آیفون 13 پرو اپل / Apple iPhone 13 Pro آبی
4.1
آیفون 13 پرو اپل

از67,777,700تومان

Xiaomi Poco X4 Pro 5G / گوشی موبایل پوکو X4 پرو شیائومی 5G خاکستریXiaomi Poco X4 Pro 5G / گوشی موبایل پوکو X4 پرو شیائومی 5G خاکستری
3.7
پوکو X4 پرو شیائومی 5G

از18,590,000تومان

با چشم باز خرید کنید
زومیت شما را برای انتخاب بهتر و خرید ارزان‌تر راهنمایی می‌کند
ورود به بخش محصولات