Static properties 
Defining static properties 
Let's add a static property to our camera class which holds information about the IP range cameras are allowed to use.
java
public class SmartCamera {
    public static String networkPrefix = "192.168.12";
    private String location;
    private int batteryLife;
    public SmartCamera(String location) {
        this.location = location;
        this.batteryLife = 100;
    }
}java
public class Main {
    public static void main(String[] args) {
        System.out.println(SmartCamera.networkPrefix); // 192.168.12
    }
}The networkPrefix property is accessed from the class itself, not an instance of the class. This ensures that all camera IP addresses begin with 192.168.12.
Using static properties 
Often, we want to use static properties from within the class. We can do this by referencing the class itself inside the class.
java
public class SmartCamera {
    public static String networkPrefix = "192.168.12";
    public static int host = 1;
    private String location;
    private int batteryLife;
    private String ipAddress;
    public SmartCamera(String location) {
        this.location = location;
        this.batteryLife = 100;
        // assign an IP address
        this.ipAddress = SmartCamera.networkPrefix + "." + SmartCamera.host;
java
public class Main {
    public static void main(String[] args) {
        SmartCamera gardenCam = new SmartCamera("Garden");
        SmartCamera loungeCam = new SmartCamera("Living Room");
        System.out.println(gardenCam.getIpAddress()); // 192.168.12.1
        System.out.println(loungeCam.getIpAddress()); // 192.168.12.2
    }
}Static methods 
Classes can have static methods too! This is useful for defining actions that affect the whole class of cameras. For example, resetting the IP range.
java
public class SmartCamera {
    public static String networkPrefix = "192.168.12";
    public static int host = 1;
    private String location;
    private int batteryLife;
    private String ipAddress;
    public static void resetHost() {
        SmartCamera.host = 1;
    }
    public SmartCamera(String location) {
        this.location = location;
        this.batteryLife = 100;
        this.ipAddress = SmartCamera.networkPrefix + "." + SmartCamera.host;
        SmartCamera.host++;
    }
}java
public class Main {
    public static void main(String[] args) {
        SmartCamera gardenCam = new SmartCamera("Garden");
        SmartCamera loungeCam = new SmartCamera("Living Room");
        System.out.println(SmartCamera.host); // 3
        // Resetting the host
        SmartCamera.resetHost();
        System.out.println(SmartCamera.host); // 3
    }
} Corndel
Corndel