Using static classes java

Static class Java Example

In this example, we will discuss the purpose of a static class in Java. First of all, let’s give a short explanation of the static modifier.

For example, in Java, if a field or a method in a class has the static modifier in its declaration, then it is always associated with the class as a whole, rather than with any object of the class.

In the code below we have declared a class named Vehicle , a class field member named vehicleType and a method named getVehicleType() , both declared as static .

The static modifier allows us to access the variable vehicleType and the method getVehicleType() using the class name itself, as follows:

Something similar happens to classes that are declared static , but in order to explain this better, we must first explain the inner classes or generally, the nested classes, because ONLY nested classes can be static.

Java supports the concept of nested classes. Nested classes are classes that can be defined within the body of another class. An example of a nested class is illustrated below:

Читайте также:  Как в php вернуть адрес

The OuterClass which contains another class can be also called top-level class.

Nested classes are further divided into two categories: static and non-static. Nested classes that are declared static are called static nested classes. Non-static nested classes are just called inner classes.

What’s the difference between nested static classes and non-static (inner) classes?

The main difference is that inner class requires the instantiation of the outer class so as to be initialized and it is always associated with an instance of the enclosing class. On the other hand, a nested static class is not associated with any instance of the enclosing class. Nested static classes are declared with the static keyword, which means than can be accessed like any other static member of class, as we shown before.

1. Example of nested classes

Create a java class named OuterClass.java with the following code:

As we can observe in the above code, we have declared a class named OuterClass which is considered to be the outer class or otherwise, the top-level class. Also, we can see that we have declared two more nested classes (they are enclosed in the outer class), one of which is static and the other one is non-static. Finally, we have declared the main method in the outer class, which is static as always (Really, why is that? The answer is that we can call it without creating an instance of a class which contains this main method). We can see that the method of the nested static class can be accessed without creating an object of the OuterClass , whereas the method of the inner class needs instantiation of the OuterClass in order to get accessed.

Method of nested static class Method of inner(non-static nested) class

2. Download the source code

This was an example of the static class in Java.

Источник

Using static classes java

Learn Latest Tutorials

Splunk tutorial

SPSS tutorial

Swagger tutorial

T-SQL tutorial

Tumblr tutorial

React tutorial

Regex tutorial

Reinforcement learning tutorial

R Programming tutorial

RxJS tutorial

React Native tutorial

Python Design Patterns

Python Pillow tutorial

Python Turtle tutorial

Keras tutorial

Preparation

Aptitude

Logical Reasoning

Verbal Ability

Company Interview Questions

Artificial Intelligence

AWS Tutorial

Selenium tutorial

Cloud Computing

Hadoop tutorial

ReactJS Tutorial

Data Science Tutorial

Angular 7 Tutorial

Blockchain Tutorial

Git Tutorial

Machine Learning Tutorial

DevOps Tutorial

B.Tech / MCA

DBMS tutorial

Data Structures tutorial

DAA tutorial

Operating System

Computer Network tutorial

Compiler Design tutorial

Computer Organization and Architecture

Discrete Mathematics Tutorial

Ethical Hacking

Computer Graphics Tutorial

Software Engineering

html tutorial

Cyber Security tutorial

Automata Tutorial

C Language tutorial

C++ tutorial

Java tutorial

.Net Framework tutorial

Python tutorial

List of Programs

Control Systems tutorial

Data Mining Tutorial

Data Warehouse Tutorial

Javatpoint Services

JavaTpoint offers too many high quality services. Mail us on h[email protected], to get more information about given services.

  • Website Designing
  • Website Development
  • Java Development
  • PHP Development
  • WordPress
  • Graphic Designing
  • Logo
  • Digital Marketing
  • On Page and Off Page SEO
  • PPC
  • Content Development
  • Corporate Training
  • Classroom and Online Training
  • Data Entry

Training For College Campus

JavaTpoint offers college campus training on Core Java, Advance Java, .Net, Android, Hadoop, PHP, Web Technology and Python. Please mail your requirement at [email protected].
Duration: 1 week to 2 week

Like/Subscribe us for latest updates or newsletter RSS Feed Subscribe to Get Email Alerts Facebook Page Twitter Page YouTube Blog Page

Источник

Static Class in Java

Java Course - Mastering the Fundamentals

In Java, static is one of the most popular keywords associated with functions, variables, classes, and blocks. When any of these members are made static, we can access it without creating an instance of the class in which they are defined.

Static class in Java is a nested class and it doesn’t need the reference of the outer class. Static class can access only the static members of its outer class.

static-class-accessing-static-member

What is Static Class in Java?

We as Java programmers have come across the keyword static and it is majorly seen with the main() function in Java. But does it mean that only functions can be declared static? The answer is No. In Java, variables, blocks, methods, and classes can be declared as static .

In order to declare a member as static, we use the keyword static before the member. When we declare a certain member as static, we do not have to create an instance of the class to access it.

Syntax

Here we have declared an Outer class and then declared a nested class.

Static classes in Java can be created only as nested classes. Let us understand the concept of inner, outer, and nested classes first.

1. Inner Class

Inner classes are the classes that are non-static and nested. They are written inside an outer class. We are unable to create an instance of the inner class without creating an instance of its given outer class. This is needed when the user has to create a class but doesn’t want other classes to access it. Here we can use an inner class for that reason.

2. Outer Class

Outer classes are the classes in which nested or inner classes are defined.

3. Nested Class

Nested class can be static or non-static. The non-static nested class is known as an inner class.

An instance of a static nested class can be created without the instance of the outer class. The static member of the outer class can be accessed only by the static nested class.

The following figure illustrates the inner, outer, and nested classes.

inner-outer-and-nested-class-of-static-nested-class

  • The nested static class can access the static variables.
  • Static nested classes do not have access to other members of the enclosing class which means it has no access to the instance variables (non-static variables) which are declared in the outer class.

Example

Explanation:

  • We have declared Outer and Nested classes. In the outer class, we have created a static member which can be accessed by the static class.
  • As we know, static members can be accessed by the static class only, so in the main() method, we have created an instance of the nested class without the instance of the outer class as our nested class is static.

Why We Use Static Class in Java?

In Java, the static keyword helps in efficient memory management. We can access the static members without creating an instance of a class. We can access them simply by using their class name. It is also a way of grouping classes together. Also, an instance of a static nested class can be created without the instance of the outer class.

Difference between Static and Non-static Nested Class

inner-class-accessing-static-and-non-static-member

  • Static nested class can access the static members of the outer class and not the non-static members, whereas non-static nested class, i.e., the inner class can access the static as well as the non-static members of the outer class.
  • We can create an instance of the static nested class without creating an instance of the outer class.

Conclusion

  • Static class in Java is a nested class and it doesn’t need the reference of the outer class.
  • Static class can access only the static members of its outer class.
  • Static class cannot access the non-static member of the outer classes.
  • Inner classes can access the static and the non-static members of the outer class.
  • We can create an instance of the static nested class without creating an instance of the outer class.
  • The static keyword helps in memory management.

See More

Источник

10 заметок о модификаторе Static в Java

Java-университет

10 заметок о модификаторе Static в Java - 1

Модификатор static в Java напрямую связан с классом. Если поле статично, значит оно принадлежит классу, если метод статичный — аналогично: он принадлежит классу. Исходя из этого, можно обращаться к статическому методу или полю, используя имя класса. Например, если поле count статично в классе Counter, значит, вы можете обратиться к переменной запросом вида: Counter.count. Прежде чем приступить к заметкам, давайте вспомним (а может быть, узнаем), что такое static и что может быть статическим в Java. Static — модификатор, применяемый к полю, блоку, методу или внутреннему классу. Данный модификатор указывает на привязку субъекта к текущему классу.

Статические поля

10 заметок о модификаторе Static в Java - 2

При обозначении переменной уровня класса мы указываем на то, что это значение относится к классу. Если этого не делать, то значение переменной будет привязываться к объекту, созданному по этому классу. Что это значит? А то, что если переменная не статическая, то у каждого нового объекта данного класса будет своё значение этой переменной, меняя которое мы меняем его исключительно в одном объекте: Например, у нас есть класс Car с нестатической переменной:

 Car orangeCar = new Car(); orangeCar.km = 100; Car blueCar = new Car(); blueCar.km = 85; System.out.println("Orange car - " + orangeCar.km); System.out.println("Blue car - " + blueCar.km); 
 Orange car - 100 Blue car - 85 

Как видим, у каждого объекта своя переменная, изменение которой происходит только для этого объекта. Ну а если у нас переменная статическая, то это глобальное значение — одно для всех: Теперь мы имеем Car со статической переменной:

 Orange car - 85 Blue car - 85 

Ведь переменная у нас одна на всех, и каждый раз мы меняем именно ее. К статическим переменным, как правило обращаются не по ссылке на объект — orangeCar.km, а по имени класса — Car.km

Статический блок

Есть два блока инициализации — обычный и статический. Блок предназначен для инициализации внутренних переменных. Если блок обычный, то им инициализируют внутренние переменные объекта, если же статический, соответственно, им задают статические переменные (то есть переменные класса). Пример класса со статическим блоком инициализации:

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

Статические методы отличаются от обычных тем, что они также привязаны к классу, а не к объекту. Важным свойством статического метода является то, что он может обратиться только к статическим переменным/методам. В качестве примера давайте рассмотрим класс, который у нас будет неким счётчиком, ведущим учет вызовов метода:

 Counter.invokeCounter(); Counter.invokeCounter(); Counter.invokeCounter(); 
 Текущее значение счётчика - 1 Текущее значение счётчика - 2 Текущее значение счётчика - 3 

Статический класс в Java

Статическим классом может быть только внутренний класс. Опять же, этот класс привязан к внешнему классу, и если внешний наследуется другим классом, то этот не будет наследован. При этом данный класс можно наследовать, как и он может наследоваться от любого другого класса и имплементировать интерфейс. По сути статический вложенный класс ничем не отличается от любого другого внутреннего класса за исключением того, что его объект не содержит ссылку на создавший его объект внешнего класса. Тем не менее, благодаря этому статический класс наиболее похож на обычный не вложенный, ведь единственное различие состоит в том, что он упакован в другой класс. В некоторых случаях для нас это преимущество, так как с него у нас есть доступ к приватным статическим переменным внешнего класса. Пример вложенного статического класса:

 Vehicle.Car car = new Vehicle.Car(); car.km = 90; 

Для использования статических методов/переменных/класса нам не нужно создавать объект данного класса. Конечно, следует учитывать модификаторы доступа. Например, поля private доступны только внутри класса, в котором они объявлены. Поля protected доступны всем классам внутри пакета (package), а также всем классам-наследникам вне пакета. Для более подробной информации ознакомьтесь со статьей “private vs protected vs public”. Предположим, существует статический метод increment() в классе Counter , задачей которого является инкрементирование счётчика count . Для вызова данного метода можно использовать обращение вида Counter.increment() . Нет необходимости создавать экземпляр класса Counter для доступа к статическому полю или методу. Это фундаментальное отличие между статическими и НЕ статическими объектами (членами класса). Еще раз напомню, что статические члены класса напрямую принадлежат классу, а не его экземпляру. То есть, значение статической переменной count будет одинаковое для всех объектов типа Counter . Далее в этой статье мы рассмотрим основополагающие аспекты применения модификатора static в Java, а также некоторые особенности, которые помогут понять ключевые концепции программирования.

Что должен знать каждый программист о модификаторе Static в Java

  1. Вы НЕ можете получить доступ к НЕ статическим членам класса, внутри статического контекста, как вариант, метода или блока. Результатом компиляции приведенного ниже кода будет ошибка:
 class Vehicle < public static void kmToMiles(int km)< System.out.println("Внутри родительского класса/статического метода"); >> class Car extends Vehicle < public static void kmToMiles(int km)< System.out.println("Внутри дочернего класса/статического метода "); >> public class Demo< public static void main(String args[])< Vehicle v = new Car(); v.kmToMiles(10); >> 

Источник

Оцените статью