D1-kifpool

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

یک‌شنبه ۱۲ اردیبهشت ۱۳۹۵ - ۱۱:۳۰
مطالعه 18 دقیقه
در جاوا قابلیتی وجود دارد که به وسیله‌ی آن می‌توانیم کلاس‌های خود را دسته‌بندی و سازماندهی کنیم. package یا دسته‌بندی کردن کلاس‌ها این امکان را به ما می‌دهد تا بتوانیم کلاس‌هایی که به یک دسته متعلق هستند یا کاربرد مشابهی دارند را در کنار هم قرار دهیم. همچنین می‌توانیم بیش از یک فایل برنامه که پسوند java. دارد را با نام‌های یکسان بر روی سیستم ذخیره کنیم. از نظر پیاده‌سازی، یک پکیج چیزی جز یک شاخه یا دایرکتوری (Directory یا همان فولدر) بر روی کامپیوتر نیست.
تبلیغات
D4-mci
کپی لینک

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 در برنامه نویسی شی گرا آشنا می‌شوید.

کپی لینک

لینکدین

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

کپی لینک

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

مقاله رو دوست داشتی؟
نظرت چیه؟
داغ‌ترین مطالب روز
تبلیغات
DN-DNShatel

نظرات

تبلیغات
D7-zoomitproduct
D7-B6Snappshop
آخرین ویدیوها
پخش از رسانه
عکس گوشی ردمی نوت ۱۴ پرو و ردمی نوت ۱۴ پرو پلاس
بررسی ردمی نوت ۱۴ پرو و ۱۴ پرو پلاس 5G
00:13:31
زومکست با مدیرعامل جاباما
گفتگو با مدیرعامل جاباما؛ فرصتی برای دیدن ناشناخته‌های ایران
00:38:48
دیگه گلس نخر در حال شکستن یک گلس
شیشه‌های ضد خش گوشی چطوری ساخته می‌شن؟
00:13:15
نگاه نزدیک به ردمی نوت ۱۴ پرو پلاس و ردمی نوت ۱۴ پرو شیائومی
نگاه نزدیک به ردمی نوت ۱۴ پرو پلاس و ردمی نوت ۱۴ پرو شیائومی
00:14:33
عکس بهزاد مرعشیان و امیر خاوران در کنار هم
سرویس تحقیقات بازار دیجی‌کالا چیه؟
00:30:05
موشک استارشیپ روی سکوی پرتاب در تاسیسات استاربیس
پخش زنده پرتاب آزمایشی هشتم موشک استارشیپ
02:00:00
عکس مهرداد با قطعات داخلی آل این وان gt624 گرین
بررسی آل این وان گرین مدل GT624
00:35:45
عکس گوشی پوکو X7 پرو در دست
بررسی گوشی پوکو X7 پرو
00:10:50
عکس مسعود یوسف‌نژاد در کنار بهزاد اکبری
عقب‌گرد اکوسیستم استارتاپی بر اثر فیلترینگ
00:36:29
عکس گوشی‌های پوکو ایکس ۶ پرو و داریا باند ۲ در کنار هم
مقایسه گوشی داریا باند ۲ با پوکو X6 Pro
00:11:29
عکس گلکسی اس ۲۵ اولترا و آیفون ۱۶ پرومکس در کنار هم و مقایسه دوربین
مقایسه دوربین گلکسی S25 اولترا و آیفون 16 پرو مکس
00:47:42
عکس ری‌برندینگ همراه اول و ساین جدید این اپراتور
مراسم ری‌برندینگ همراه اول؛ هویت جدید چه فرقی کرده؟
00:07:27
زومیت چطور بررسی می‌کنه؟
محصولات چطور تو زومیت بررسی می‌شن؟ 🔍📦
00:10:48
پشت پرده بزرگ‌ترین هک تاریخ کریپتو
پشت پرده بزرگ‌ترین هک تاریخ کریپتو
00:06:49
عکس مسعود یوسف نژاد و پشوتن پورپزشک درکنارهم و موضوع فیلترینگ اینستاگرام
شکست ۳ ساله فیلترینگ اینستاگرام؛ رشد ۳ برابری فروش ایرانی‌ها
00:32:59
آیفون ۱۶ ای و بی معنا
جایگزین آیفون اس ای معرفی شد؛ قلبی جدید با قیمت بالا 🔻
00:09:24
تصویر شادان با مکبوک و لوگو نرم افزارهایی که روی مک نصب می شوند و نمیشوند
قبل از خرید مک‌بوک این ویدیو رو ببین!
00:13:44
عکس بهزاد با میکروفون زومیت در دست و ماشین لباس‌شویی پاکشوما
برند پاکشوما در تولد ۵۰ سالگی خودش، ری‌برند شد
00:12:44
نسل دوم انحصار؟ 📦 آنباکس داریا باند ۲
نسل دوم انحصار؟ 📦 آنباکس داریا باند ۲
00:17:09
عکس آقای مصحفی با دو تا ماه در دست و زمین در پشت سر او
چی می‌شد اگه زمین ۲ تا ماه داشت؟
00:06:23
آموزش نصب لینوکس روی اندروید
آموزش نصب لینوکس روی گوشی‌های اندروید
00:30:39
عکس گوشی گلکسی اس ۲۵ و اس ۲۵ پلاس در کنار هم
بررسی گلکسی اس ۲۵ و اس ۲۵ پلاس
00:13:47
هوش مصنوعی سامسونگ
بررسی قابلیت‌های هوش مصنوعی سامسونگ در اس ۲۵
00:20:23
آینده تکنولوژی با ترامپ چطور خواهد شد؟
ترامپ با آینده تکنولوژی چی کار می‌کنه؟
01:14:29
عکس کاور خبرنگار زومیت و مدیرعامل زرپاد
قبل از خرید طلای آنلاین این ویدیو رو تماشا کنید!
00:01:12
همه چیز درباره دیپ سیک
دیپ سیک؛ انقلاب هوش مصنوعی از چین 🇨🇳⚡💻
00:23:37
بررسی گلکسی اس ۲۵ اولترا سامسونگ
بررسی گلکسی اس ۲۵ اولترا سامسونگ؛ چاقوی کند سامسونگ 🔪🔥
00:19:41
گوشی اشتراکی
گوشی اشتراکی؟! دیگه گوشیت مال خودت نیست! 😳📱
00:09:55
عکس پلتفرم ابرآمد در رویداد ابری‌گپ
گزارش زومیت از رویداد «ابری‌گپ»
00:08:39
عکس امیرمحمد سلیمانی و میکروفون زومیت در دستانش
پشت صحنه اولین دورهمی حضوری زومیت
00:16:35
چیزایی که سامسونگ توی رویداد آنپکد بهتون نگفت!
چیزایی که سامسونگ توی رویداد آنپکد بهتون نگفت!
00:07:56
اولین گردهمایی زومیت و پوشش زنده‌ی رویداد آنپکد سامسونگ
نسخه آفلاین پوشش زنده دورهمی زومیت
03:04:03
عکس سری گلکسی اس ۲۵ سامسونگ در دست بهزاد
نگاه نزدیک زومیت به خانواده گلکسی اس ۲۵
00:08:52
۴ مرد جوان در کاور مراسم رونمایی گلکسی اس ۲۵
پوشش زنده دورهمی زومیت؛ مراسم معرفی سری گلکسی اس ۲۵ سامسونگ
03:00:00
انتظارات از رویداد معرفی گلکسی اس ۲۵ سامسونگ و دورهمی زومیت
انتظارات از رویداد معرفی سری اس ۲۵ سامسونگ و دورهمی زومیت
00:11:31
عکس بهزاد در ماشین پرنده و لوگو CES
۱۰ فناوری برتر امسال که آینده رو تغییر می‌دن
00:11:52
کاور دورهمی زومیت
اولین دورهمی حضوری زومیت؛ گردهمایی بزرگ عاشقان فناوری 🎉
00:01:04
انتظارات زومیت از دوربین گلکسی اس ۲۵ اولترا سامسونگ
گلکسی اس ۲۵ اولترا تو راهه؛ از دوربین این گوشی چی می‌دونیم؟
00:09:51
عکس بهزاد و هادی با جعبه‌های دیجی‌کالا و لوگوی بیسوس
آنباکس ۴۰ میلیونی کالاهای متنوع بیسوس
01:13:38
کامپیوترهای کوانتومی و جهان های موازی
همه چیز درباره کامپیوترهای کوانتومی
00:13:43
عکس کاور دیجی پی
گزارش غرفه‌ی دیجی‌پی در نمایشگاه بین‌المللی ریتیل شو تهران
00:08:40
گلکسی اس ۲۴ اولترا نه، اس ۲۵ اولترا خوبه
اس۲۴ اولترا نخر؛ اس۲۵ اولترا داره میاد!!! 🤯
00:08:54
کیس خوب چه ویژگی‌هایی داره؟
قبل از خرید کیس کامپیوتر به این نکات توجه کنید ⚠️
00:07:56
بررسی کاور فر تو کار ال جی
معرفی فر تو کار ال‌جی؛ مدل ۷۶ لیتری LG InstaView
00:04:55
کاور ویدئو بررسی لپ تاپ Stealth GS77 ام اس آی / MSI Stealth GS77 Review
بررسی لپ تاپ Stealth GS77 ام اس آی / MSI Stealth GS77 Review
00:09:22
کاور ویدئو بررسی لپ تاپ ROG Zephyrus G14 ایسوس / ASUS ROG Zephyrus G14 Review
بررسی لپ تاپ ROG Zephyrus G14 ایسوس / Zephyrus G14 Review
00:10:58
کاور ویدئو برررسی شیائومی 12T و 12T پرو / Xiaomi 12T & 12T Pro Review
برررسی شیائومی 12T و 12T پرو / Xiaomi 12T & 12T Pro Review
00:09:07
کاور ویدئو بررسی سرفیس پرو 9 مایکروسافت / Surface Pro 9 Review
بررسی سرفیس پرو 9 مایکروسافت / Surface Pro 9 Review
00:11:32
کاور ویدئو بررسی کیس اسمبل شده MEG Aegis Ti5 ام اس آی / MSI MEG Aegis Ti5 Review
بررسی کیس اسمبل شده MEG Aegis Ti5 ام اس آی / MEG Aegis Ti5
00:09:54
کاور ویدئو بررسی لپ تاپ Spectre x360 اچ پی | HP Spectre x360 Review
بررسی لپ تاپ Spectre x360 اچ پی | HP Spectre x360 Review
00:13:00
coming soon...

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

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

از29,999,900تومان

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

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

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

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

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

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

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

از74,459,000تومان

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

از80,477,000تومان

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

از139,400,000تومان

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

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

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

از11,400,000تومان

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

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

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

از10,709,000تومان

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

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

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

از23,877,000تومان

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

از40,083,000تومان

پنل جلو و پشت گوشی موبایل گلکسی A35 سامسونگ بنفش روشن / Samsung Galaxy A35پنل جلو و پشت گوشی موبایل گلکسی A35 سامسونگ بنفش روشن / Samsung Galaxy A35
4.3
گلکسی A35 سامسونگ

از19,980,000تومان

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

از47,880,000تومان

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

از75,979,000تومان

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

از80,630,000تومان

موبایل آیفون 11 اپل بنفش / Apple iPhone 11 Purpleموبایل آیفون 11 اپل بنفش / Apple iPhone 11 Purple
3.8
آیفون 11 اپل

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

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

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

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

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

بهترین مقالات زومیت

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