Java Class and Object: Fundamental Concepts Explained
Table of Content:
Class and Object
Classes and objects are the fundamental components of OOP's. Often there is a confusion between classes and objects. In this tutorial, we try to tell you the difference between class and object.
First, let's understand what they are,
What is Class in Java
A class is an entity that determines how an object will behave and what the object will contain. In other words, it is a blueprint or a set of instruction to build a specific type of object.
A class in Java can contain:
- fields
- methods
- constructors
- blocks
- nested class and interface
Syntax to declare a class:
class Class_name {
field or variable ;
method like main() and others ;
}
class Class_name { field or variable ; method like main() and others ; }
What is an Object
An object is nothing but a self-contained component which consists of methods and properties to make a particular type of data useful. Object determines the behavior of the class. When you send a message to an object, you are asking the object to invoke or execute one of its methods.
From a programming point of view, an object can be a data structure, a variable or a function. It has a memory location allocated. The object is designed as class hierarchies.
What is the difference between Object & class?
A class is a blueprint or prototype that defines the variables and the methods (functions) common to all objects of a certain kind.
An object is a specimen of a class. Software objects are often used to model real-world objects you find in everyday life.
Concept of class, Object and methods
You can see the picture of three different breeds of dogs below. Here Dog
is a class and three different type of breeds are called as three
different objects like :
Dog1Object
Dod2Object
Dog3Object
List down the differences between them. Some of the differences you might have listed out may be breed, size, color, age etc. If you think for a minute, these differences are also some common characteristics shared by these dogs. These characteristics (breed, size, color, age) can form a fields or data members for your object.
Next, list out the common behaviors of these dogs like eat, run sleep, name etc. So these will be the actions for our objects. These behavoiurs(eat, run sleep, name) is called as methods.
So far we have defined following things:
- Class - Dogs
- Data members - breed, size, color, age etc.
- Methods- eat(), run(), sleep(), name().
Sample Program for the above concept
public class Dog { // instance variable String breed; String size; String color; int age; public static void main(String[] args) { // create object here Dog Dog1Object = new Dog(); Dog Dog2Object = new Dog(); Dog Dog3Object = new Dog(); // Data input for Dog Object 1 Dog1Object.breed = "Beagle"; Dog1Object.size = "Large"; Dog1Object.color = "Light Gray"; Dog1Object.age = 5; // Data input for Dog Object 2 Dog2Object.breed = "Buldog"; Dog2Object.size = "Large"; Dog2Object.color = "Orange"; Dog2Object.age = 6; // Data input for Dog Object 3 Dog3Object.breed = "German Shepherd"; Dog3Object.size = "large"; Dog3Object.color = "white and Orange"; Dog3Object.age = 6; // print all data from objects System.out.println("Dog Object 1: \n Breed: "+Dog1Object.breed+"\n Size: "+Dog1Object.size+"\n Color: "+Dog1Object.color+"\n Age: "+Dog1Object.age); System.out.println("Dog Object 2: \n Breed: "+Dog2Object.breed+"\n Size: "+Dog2Object.size+"\n Color: "+Dog2Object.color+"\n Age: "+Dog2Object.age); System.out.println("Dog Object 3: \n Breed: "+Dog3Object.breed+"\n Size: "+Dog3Object.size+"\n Color: "+Dog3Object.color+"\n Age: "+Dog3Object.age); } }
Output
Dog Object 1: Breed: Beagle Size: Large Color: Light Gray Age: 5 Dog Object 2: Breed: Buldog Size: Large Color: Orange Age: 6 Dog Object 3: Breed: German Shepherd Size: large Color: white and Orange Age: 6
Practical Approach of Class and Object
main() Method within class
In this example, we have created a Student class that have two data members name and rollNo.
We are creating the object of the Student class by new keyword and printing the objects value.
Here, we are creating main() method inside the class.
class Student{ String name; //field or data member or instance variable int rollNo;//field or data member or instance variable public static void main(String args[]){ Student s1=new Student();//creating an object of Student System.out.println(s1.name); //accessing member through reference variable System.out.println(s1.rollNo);//accessing member through reference variable } }
Output:
null 0 Press any key to continue . . .
It gives null and 0 output because we know that default value number is 0 and for object references it is null.
main() Method outside class
We create classes and use it from another class using instance of that class(object).
It is a better approach than previous one. Let's
see a simple example, where we are having main()
method in another class.
We can have multiple classes in different java files or single java file. If you define multiple
classes in a single java source file, it is a good idea to save the file name with the class
name which has main()
method.
// this is a different class class Student{ String name; //field or data member or instance variable int rollNo;//field or data member or instance variable } //this is main class class MainClass{ public static void main(String args[]){ Student s1=new Student();//creating an object of Student System.out.println(s1.name); //accessing member through reference variable System.out.println(s1.rollNo);//accessing member through reference variable } }
Output:
null 0 Press any key to continue . . .
It gives null and 0 output because we know that default value number is 0 and for object references it is null.
Initialize object
There is three Ways to initialize object
- By reference variable
- By method
- By constructor
Initialization through reference
class Student{ String name; //field or data member or instance variable int rollNo;//field or data member or instance variable } class MainClass{ public static void main(String args[]){ Student s1=new Student();//creating an object of Student s1.name = "Ramboo"; //Initialization through reference s1.rollNo = 21; // Initialization through reference System.out.println(s1.name+"'s Roll No: "+s1.rollNo); } }
Output:
Ramboo's Roll No: 21 Press any key to continue . . .
Initialization through method
class Student{ String name; //field or data member or instance variable int rollNo;//field or data member or instance variable void methodforInti(String s, int r) { name = s; rollNo = r; } public static void main(String args[]){ Student obj1=new Student(); obj1.methodforInti("Ramboo",21); System.out.println(obj1.name+"'s Roll No: "+obj1.rollNo); } }
Output:
Ramboo's Roll No: 21 Press any key to continue . . .
Initialization and dispaly through method:
class Student{ String name; //field or data member or instance variable int rollNo;//field or data member or instance variable void methodforInti(String s, int r) { name = s; rollNo = r; } void methodforDisplay() { System.out.println(name+"'s Roll No: "+rollNo); } public static void main(String args[]){ Student obj1=new Student(); obj1.methodforInti("Ramboo",21); obj1.methodforDisplay(); } }
Output:
Ramboo's Roll No: 21 Press any key to continue . . .
Initialization through constructor
class Student{ String name; //field or data member or instance variable int rollNo;//field or data member or instance variable Student(String s, int r) // this is a constructor { name = s; rollNo = r; } void methodforDisplay() { System.out.println(name+"'s Roll No: "+rollNo); } public static void main(String args[]){ Student obj1=new Student("Ramboo",21); obj1.methodforDisplay(); } }
Output:
Ramboo's Roll No: 21 Press any key to continue . . .