Перейти к содержимому

Welcome to La2base.ru
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. If you already have an account, login here - otherwise create an account for free today!

Информация

  • Добавлена: окт 04 2016 01:23
  • Просмотров: 512
 


* * * * *
0 Рейтинг

Статические свойства и методы

Написано alexiali окт 04 2016 01:23
статистические свойства методы java

d5b26e3ac8f0.jpg

 

 

 

   Пришло время познакомиться с еще одним понятием — статические свойства и методы. Статические методы/свойства классов это такие

 

методы/свойства, к которым можно обратиться не создавая объект данного класса. Например, мы создаем описание стола. В этом случае,

 

только когда мы создадим реальный стол, мы сможем говорить о его высоте и ширине (с учетом погрешностей при производстве). Но вот

 

материал скорее всего будет один на всех. Также один на всех будет чертеж, название и прочие атрибуты. Т.е. очевидно, что некоторые свойства

 

присущи не конкретному объекту, а классу целиком. Тоже самое можно сказать и о методах. К ним можно обращаться не создавая объект. Мы

 

уже встречали такой метод — он называется main. Теперь мы можем более осознанно смотреть на такое определение:

public class TestClass
{
    public static void main(String[] arg) {
        System.out.println("Hello, world");
    }
}
   При запуске JVM мы отдаем ей наш класс TestClass у которого есть статический метод main. В этом случае JVM не требуется создавать
 
экземпляр класса для обращения к методу main.
 
 
   Тоже самое касается и свойств класса. Если мы объявляем статическую переменную, это значит, что она одна на всех. Причем существует
 
она даже тогда, когда нет ни одного экземпляра данного класса. Мы уже использовали статические свойства — например
 
JFrame.EXIT_ON_CLOSE. Это статическое свойство, которое имеет определенную величину и к ней можно обратиться прямо через класс. Вы
 
указываете имя класса, точку и имя переменной. Для вызова статического метода надо будет сделать нечто подобное. Важным отличием
 
статического метода от обычного является то, что там не существует переменной this, т.е. обратиться к свойству класса, которое не является
 
статическим, невозможно.
 

public class TestClass
{
    private static Integer staticValue = 99;
    private Integer simpleValue = 99;

    public static void main(String[] arg) {
        System.out.println(TestClass.staticValue);
    }
}
   В указанном примере мы можем обратиться к свойству staticValue прямо в методе main. Но попытка обратиться к свойству simpleValue вызовет
 
ошибку компиляции. Но обратиться к статическому свойству из обычного метода можно.
 
 
   В общем-то на первый раз этой информации должно быть достаточно. Использование статических методов/свойств в некоторых случаях
 
хорошо работает и использовать их удобно. Например метод преобразования строки в число или получение какой-либо константы. Мы еще
 
будем встречаться с ними, тогда и будем расширять наши знания об их особенностях. На данных момент единственное, что еще хотелось бы
 
упомянуть, это слово final.
 
 
 
Определение final
 
 
   Определение final применяется в нескольких случаях. Во-первых, оно позволяет запретить изменение значения переменной. Т.е. если Вы
 
создадите переменную с определением final, то значение этой переменной уже нельзя будет поменять. Рассмотрим несложный пример.
 

public class TestClass
{
    public static void main(String[] arg) {
        final Integer f = new Integer(100);
        f = 200;
    }
}
   Строка f = 200; не скомпилируется, т.к. переменная f уже проинициализирована.
 
Когда определение final применяется к свойству класса, то его можно инициализировать либо в месте описания, либо в конструкторе (только
 
если инициализации не было в описании)
 

public class TestClass
{
    private final Integer value;

    public TestClass() {
        // Здесь будет ошибка, если инициализация
        // будет сделана в описании свойства
        value = 100;
    }

}
   Применив определение final к статической переменной вы можете получить константу, что очень удобно. Уже упомянутое нами статическое
 
свойство JFrame.EXIT_ON_CLOSE является константой и ее полное определение выглядит вот так:
 

public static final int EXIT_ON_CLOSE = 3;

   Применяя определение final к методу вы запрещаете переопределять этот метод в классах-потомках. В приведенном примере наследники

 

класса TestClass не смогут переопределить метод getFinalName().

public class TestClass
{
    public final String getFinalName() {
        return "Final name for TestClass";
    }

}

   Если же вы хотите совсем запретить расширения важного для вас класса, то при его определении вы можете использовать final. В

 

приведенном примере уже невозможно будет создать наследника от класса TestClass

public final class TestClass
{
    public String getFinalName() {
        return "Final name for TestClass";
    }

}
   В Java достаточно много таких классов — Integer, String, Double.
 
 
   Думаю, что на данный момент информации о слове final будет достаточно. К нему мы тоже еще будем возвращаться по мере изучения других
 
возможностей Java.
 
 
 
Источник: java-course.ru
 

Всем хорошего настроения! : )

 

 

0 Комментариев
или Войти


Powered by Tutorials 1.5.0 © 2017, by Michael McCune