سلام!

متغیرهای static، بعد از تمام شدن هر scope (همان طور که قبلا توضیح داده ام، به فضای بین هر { و } یک scope می گویند) حذف نمی شوند در حالی که متغیرهای معمولی حذف می شوند. این یعنی این که اگر بعدا دوباره به این scope برگردیم، مقدار آن همانی است که قبلا بوده است.

برای این که یک متغیر static تعریف کنیم،‌ باید به صورت زیر عمل کنیم.

static TYPE NAME;

یعنی کلمه ی static را به اول تعریف اضافه کنیم. با کمک این متغیر می توان فهمید که چند بار به یک scope مراجعه شده است و یا یک تابع چند بار صدا زده شده است. مثلا این کد عدد n را می گیرد و nامین عدد فیبوناچی را حساب می کند. در این کد متغیر counter نشان دهنده ی تعداد بارهایی است که این تابع صدا زده شده است.

حالا به مبحث متغیرهای static در class می پردازیم. وقتی که در class یک متغیر static تعریف کنید، این متغیر قبل از این که از آن class یک object بسازید وجود دارد. مثلا وقتی که شما در class آدم یک متغیر معمولی به نام height دارید، باید حتما یک object از آدم بسازید تا یک متغیر height هم برای آن تعریف شود. اما اگر یک متغیر static در این class داشته باشید، قبل از این که یک object بسازید آن متغیر وجود دارد. پس این متغیر از object ها جدا است و برای همین هم مقدار آن بین تمامی object ها یکی است.

اکنون نحوه ی تعریف آن را آموزش می دهیم. برای این که در یک class یک متغیر static تعریف کنید، باید مثل این کد عمل کنید. طرز استفاده از آن را نیز می توانید در این کد مشاهده نمایید.

این متغیر برای این که بفهمید چند object از class مورد نظر ساخته شده است مفید است. یعنی مثل این کد.

تمرین خاصی برای این مبحث نیاز نیست. می توانید طرز تعریف و استفاده از آن را خودتان تمرین کنید.

موفق باشید!