World class Hard Drive Recovery and renowned raid recovery services

WestNIC provides reliable web hosting services

Site navigation below

This FAQ is part of the Code Style Help and FAQ section. Use the help request form below if your question is not answered here, but make sure you are asking the right question first.

Subscribe to this FAQ: RSS news feed

FAQ search

Object concepts

Q: What's the difference between a class and an object in Java?

A: A Java class is a definition or model of an object type. A class has a specific set of fields, methods and constructors with distinct argument types. Any object that fulfils a class definition directly or by inheritance has a set of properties and behaviour that is common to all instances of the class. In this sense, a class is like a set of things that are alike.

In Java concrete classes also provide a code implementation that can be instantiated to create an object reference. An instance of a class directly fulfils the its own definition, it also fulfils any superclass definitions too.

The Java Virtual Machine creates static references to classes when it runs a Java program. Classloaders make the public static fields and methods of classes available to the runtime system whether any instance exists or not. When a constructor is called, the class returns an instance of the object it represents.

Q: What is an object in Java?

A: In Java the Object class is the ultimate superclass of every other object type. All objects are extended from the Object class, either directly or by inheritance through any number of parent classes. If a class does not explicitly extend any named class, it implicitly extends the Object class. An object with a small o is the word used to describe an instance of a Java class.

Object methods

Q: Can I use the same variable name in two methods?

A: It is possible to use the same variable names for method local variables in two separate methods. However, all variables in a single method must have different names.

public class MethodLocalVariables {

    void testOne() {

        int test;
    }

    void testTwo() {

        int test;
    }
}
      
Q: How can I get the caller of a method?

A: In most cases it is not relevant or necessary for a Java method to know the object that called it. If your code needs to know the origin of a method call it is likely the method is located in the wrong host class, or your overall program structure does not follow good object oriented principles. Consider whether you can move the method to a different host class or refactor to place class-specific code in the relevant classes.

If you find there really is good reason to know the origin of method calls, add an Object argument to the method and use the getClass() method to test.

Q: How does an object call an inner class method?

A: Host classes call methods on inner classes in exactly the same way as they would on a separate class defined in its own compilation unit. To call an inner class' instance method it is necessary to instantiate the class first, as below.

Premium Content: Follow this link for subscription information More details available to subscribers:
How does an object call an inner class method?

Q: What is the difference between a method header and its signature?

A: A Java method header is the whole declaration statement for a method before its curly braces. The header includes the method's visibility modifier, return type, arguments and exceptions, as below.

public final String getDetails(final File file,
                               final String key) throws IOException
      

A Java method signature is the method name and parameters only. The order of the parameters is significant because they may distinguish overloaded methods by the same name.

getDetails(File, String)
      

Object design

Q: Can objects be used in place of arrays?

A: Yes, sometimes it is sensible to use an object to carry other object references instead of an array. For instance, you could issue an object as the return value of a method that must return multiple object references.

Premium Content: Follow this link for subscription information More details available to subscribers:
Can objects be used in place of arrays?

Q: What's the difference between equals and ==?

A: The Java == operator is used to compare primitive values such as int, long and boolean for equality; whether the variables, values or expression on either side of the operator equate to the same value.

Premium Content: Follow this link for subscription information More details available to subscribers:
What's the difference between equals and ==?

Understanding constructors

Q: How do I invoke a constructor?

A: Java object constructors are invoked by putting the new operator before the class name and enclosing any constructor argument references in parentheses after it. A fundamental case is the Object class, which is invoked as follows.

Premium Content: Follow this link for subscription information More details available to subscribers:
How do I invoke a constructor?

Q: How can I call a constructor from a constructor?

A: When you have a number of constructors in a class you can call them using this() in a similar way to the superclass constructor super(). For instance, if you have a "good citizen" constructor that takes a String and a boolean, and a shorthand version that only takes a String, you may pass a default value to the two argument constructor, like so:

Premium Content: Follow this link for subscription information More details available to subscribers:
How can I call a constructor from a constructor?

Help request

Use the form below to submit a help request or general enquiry about the Code Style Web site. Read our guidelines on asking the right questions first.

Information: Your email address will not be mis-used. If you include your address you may be sent a personal reply, you will not be added to any mailing list unless you request it. Read the site privacy statement for details.

Add this page to your chosen social bookmarking service

Style warning - please read

Home · CSS · Java · Javascript · HTML · Help · Log