Java - Class (Definition)


A class provides the blueprint for objects; you create an object from a class. All classes are derived from the Object class.

A class declaration names the class and encloses the class body between braces. The class name can be preceded by modifiers. The class body contains:

for the class.

In the Java programming language, every application start in a class with the help of the main method.

A class uses:

  • fields to contain state information
  • and uses methods to implement behaviour.

Constructors that initialize a new instance of a class use the name of the class and look like methods without a return type.

Every application begins with a class definition (the main class) with a main method.

A class is a blueprint or prototype from which objects are created.

Within an instance method or a constructor, “this” is a reference to the current object.

You control access to classes and members in the same way: by using an access modifier such as public in their declaration.

Special Type Class


A class name must be a binary name as defined by The Java™ Language Specification.

Examples of valid class names include:

  • “java.lang.String”
  • “javax.swing.JSpinner$DefaultEditor”
  • “$Builder$FileBuilder$1”
  • “$3$1”

With the name following the Pascal Casing. (ie CamelCase which always begins with a capital letter)


Below string class is a class literal.

Class<String> c = String.class;

A class literal can be passed among methods to communicate both:

  • compile-time
  • and runtime type information (Used intensively with reflection)

In this case, it is called a type token

See also: Design Pattern - Typesafe heterogeneous container (Java)



The most basic form of a class definition is:

class MyClass {
    //field, constructor, and method declarations

The keyword class begins the class definition for a class named MyClass and the class body (the area between the braces) contains all the code that provides for the life cycle of the objects created from the class:

  • constructors for initializing new objects,
  • declarations for the fields that provide the state of the class and its objects,
  • and methods to implement the behaviour of the class and its objects.

You can add at the very beginning modifiers like:

  • public (other classes can access MyClass)
  • or private


class MyClass extends MySuperClass implements YourInterface {
    //field, constructor, and method declarations

means that MyClass is a subclass of MySuperClass and that it implements the YourInterface interface.





A start or main class is the first entry point of a whole application. She must have a main method in order to start the application. She is defined in the manifest file.


For the java version that have compiled the class, see Java - Compile (class file)



An enclosing class is a static inner class


For every type of object, the Java virtual machine instantiates an immutable instance of java.lang.Class which:

  • provides methods to examine the runtime properties of the object (including its members and type information)
  • provides the ability to create new classes and objects.
  • is the entry point for all of the Reflection APIs.



a class when an instance of an object is available

The simplest way is to invoke Object.getClass().

the class


For instance, this statement will returns the Class for String in the Class nicoStringClass .

Class nicoStringClass = "nico".getClass();


Class c = System.console().getClass();

There is a unique console associated with the virtual machine which is returned by the static method System.console(). The value returned by getClass() is the Class corresponding to


enum E { A, B }
Class c = A.getClass();

A is is an instance of the enum E; thus getClass() returns the Class corresponding to the enumeration type E.


byte[] bytes = new byte[1024];
Class c = bytes.getClass();

Since arrays are Objects, it is also possible to invoke getClass() on an instance of an array. The returned Class corresponds to an array with component type byte.



Exception in thread "main" java.lang.NoClassDefFoundError:

Check your classpath. Your class cannot be found.

Unsupported major.minor version

Exception in thread "main" java.lang.UnsupportedClassVersionError: myClass: Unsupported major.minor version 51.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(
        at java.lang.ClassLoader.defineClass(
        at Method)
        at java.lang.ClassLoader.loadClass(
        at sun.misc.Launcher$AppClassLoader.loadClass(
        at java.lang.ClassLoader.loadClass(
Could not find the main class: myClass.  Program will exit.

be sure to use the good JRE Version.

Documentation / Reference

Powered by ComboStrap