# Classes & Objects — Core Java

Source: https://www.geekswithgeeks.com/en/core-java/java-classes-objects

> Define a class with fields and methods, create objects with new on the heap, and understand this plus the difference between instance and static members.

## Class = blueprint

A **class** defines state (fields) and behaviour (methods). An **object** is one instance created with `new`, living on the heap and referenced by a variable.

## A small class

`this` refers to the current instance. Instance methods act on one object's fields; `static` members belong to the class itself.

```java
public class Counter {
    private int value;

    public void increment() { this.value++; }
    public int get() { return value; }
}

Counter c = new Counter();
c.increment();
System.out.println(c.get()); // 1
```
