Рубрики

Сравнение статического ключевого слова в C ++ и Java

Ключевое слово Static используется для почти одинаковых целей как в C ++, так и в Java. Хотя есть некоторые отличия. Этот пост охватывает сходства и различия статических ключевых слов в C ++ и Java.

Члены статических данных: Как и C ++, члены статических данных в Java являются членами класса и используются всеми объектами. Например, в следующей программе Java для подсчета количества созданных объектов используется статическая переменная count .

class Test {

    static int count = 0;

  

    Test() { 

       count++; 

    }    

    public static void main(String arr[]) {

       Test t1 = new Test();

       Test t2 = new Test();

       System.out.println("Total " + count + " objects created");        

    }

}

Выход:

Total 2 objects created

Статические методы-члены: Как и C ++, методы, объявленные как статические, являются членами класса и имеют следующие ограничения:

1) Они могут вызывать только другие статические методы. Например, следующая программа завершается неудачно при компиляции. fun () не является статичным и вызывается в static main ()

class Main {

    public static void main(String args[]) {   

        System.out.println(fun());

    

    int fun() {

        return 20;

    

}

2) Они должны иметь доступ только к статическим данным.

3) Они не могут получить доступ к этому или супер . Например, следующая программа завершается неудачно при компиляции.

class Base {

    static int x = 0;       

}   

  

class Derived extends Base 

{

   public static void fun() {

       System.out.println(super.x); // Ошибка компилятора: нестатическая переменная

                                  // нельзя ссылаться из статического контекста

   }   

}

Как и в C ++, статические члены-данные и статические методы могут быть доступны без создания объекта. К ним можно получить доступ, используя имя класса. Например, в следующей программе доступ к счетчику статических данных и статическому методу fun () осуществляется без какого-либо объекта.

class Test {

    static int count = 0;

    public static void fun() { 

       System.out.println("Static fun() called"); 

    }    

}   

       

class Main

{

    public static void main(String arr[]) {

       System.out.println("Test.count = " + Test.count);        

       Test.fun();

    }

Статический блок: в отличие от C ++, Java поддерживает специальный блок, называемый статическим блоком (также называемый статическим предложением), который можно использовать для статической инициализации класса. Этот код внутри статического блока выполняется только один раз. Посмотрите Статические блоки в Java для деталей.

Статические локальные переменные: в отличие от C ++, Java не поддерживает статические локальные переменные. Например, следующая Java-программа не скомпилируется.

class Test {

   public static void main(String args[]) { 

     System.out.println(fun());

   

   static int fun()  {

     static int x= 10; // Ошибка компилятора: статические локальные переменные не допускаются

     return x--;

   }

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Сравнение статического ключевого слова в C ++ и Java

0.00 (0%) 0 votes