Java - Class (Definition)

> Procedural Languages > Java

1 - About

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.

Advertising

3 - Special Type Class

4 - Name

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”
  • “java.security.KeyStore$Builder$FileBuilder$1”
  • “java.net.URLClassLoader$3$1”

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

5 - Literal

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)

Advertising

6 - Declaration

6.1 - Minimal

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

6.2 - Extend

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.

Advertising

6.3 - Implement

6.4 - Modifier

7 - Load

8 - Main

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.

9 - version

major version number of the class file format.

The version number shows which Java version was used to compile the code.

J2SE 8 = 52,
J2SE 7 = 51,
J2SE 6.0 = 50,
J2SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

Source: http://en.wikipedia.org/wiki/Java_class_file

For example in order to to generate class files compatible with Java 1.4, use the following command line:

javac -source 1.4 HelloWorld.java

10 - Type

10.1 - Enclosing

An enclosing class is a static inner class

11 - Instantiation

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.

12 - Management

12.1 - Dependency

12.2 - a class when an instance of an object is available

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

12.3 - the class

12.3.1 - String

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

Class nicoStringClass = "nico".getClass();

12.3.2 - Console

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 java.io.Console.

12.3.3 - Enumeration

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.

12.3.4 - Array

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.

13 - Support

13.1 - java.lang.NoClassDefFoundError

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

Check your classpath. Your class cannot be found.

13.2 - 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(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: myClass.  Program will exit.

be sure to use the good JRE Version.

14 - Documentation / Reference

lang/java/class.txt · Last modified: 2018/09/15 11:08 by gerardnico