2 Java- Objects and Classes in Java
2 Java- Objects and Classes in Java
An object in Java is the physical as well as a logical entity, whereas, a class in Java is a
logical entity only.
For Example, Pen is an object. Its name is Reynolds; colour is white, known as its state. It is
used to write, so writing is its behaviour.
An object is an instance of a class. A class is a template or blueprint from which objects are
created. So, an object is the instance(result) of a class.
Fields/ variables
Methods
Constructors
Blocks
Nested class and interface
Method in Java- In Java, a method is like a function which is used to expose the behaviour of
an object.
new keyword in Java- The new keyword is used to allocate memory at runtime. All objects
get memory in Heap memory area.
In this example, we have created a Student class which has two data members id and name.
We are creating the object of the Student class by new keyword and printing the object's
value.
Output:
0
Null
In real time development, we create classes and use it from another class. 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.
Output:
0
Null
1. By reference variable
2. By method
3. By constructor
Initializing an object means storing data into the object. Let's see a simple example where we
are going to initialize the object through a reference variable.
1. class Student{
2. int id;
3. String name;
4. }
5.
6. class TestStudent2{
7. public static void main(String args[]){
8. Student s1=new Student();
9. s1.id=101;
10. s1.name="Sonoo";
11. System.out.println(s1.id+" "+s1.name);//printing members with a white space
12. }
13. }
Output:
101 Sonoo
We can also create multiple objects and store information in it through reference variable.
1. class Student{
2. int id;
3. String name;
4. }
5. class TestStudent3{
6. public static void main(String args[]){
7. //Creating objects
8. Student s1=new Student();
9. Student s2=new Student();
10. //Initializing objects
11. s1.id=101;
12. s1.name="Sonoo";
13. s2.id=102;
14. s2.name="Amit";
15. //Printing data
16. System.out.println(s1.id+" "+s1.name);
17. System.out.println(s2.id+" "+s2.name);
18. }
19. }
Output:
101 Sonoo
102 Amit
In this example, we are creating the two objects of Student class and initializing the value to
these objects by invoking the insertRecord method. Here, we are displaying the data of the
objects by invoking the displayInformation() method.
1. class Student{
2. private int id;
3. private String name;
4. void insertRecord(int i, String n){
5. id=i;
6. name=n;
7. }
8. void displayInformation(){System.out.println(id+" "+name);}
9. }
10. class TestStudent4{
11. public static void main(String args[]){
12. Student s1=new Student();
13. Student s2=new Student();
14. s1.insertRecord(111,"Karan");
15. s2.insertRecord(222,"Aryan");
16. s1.displayInformation();
17. s2.displayInformation();
18. }
19. }
Output:
111 Karan
222 Aryan
As you can see in the above figure, object gets the memory in heap memory area. The
reference variable refers to the object allocated in the heap memory area. Here, s1 and s2
both are reference variables that refer to the objects allocated in memory.
One of the important tasks that constructor performs is initialization of objects but
constructor can perform other important tasks too other than initializing objects.
1. class Rectangle{
2. int length;
3. int width;
4. void insert(int l, int w){
5. length=l;
6. width=w;
7. }
8. void calculateArea(){System.out.println(length*width);}
9. }
10. class TestRectangle1{
11. public static void main(String args[]){
12. Rectangle r1=new Rectangle();
13. Rectangle r2=new Rectangle();
14. r1.insert(11,5);
15. r2.insert(3,15);
16. r1.calculateArea();
17. r2.calculateArea();
18. }
19. }
Output:
55
45
Anonymous object
If you have to use an object only once, an anonymous object is a good approach. For
example:
1. new Calculation().fact(5);
1. class Calculation{
2. void fact(int n){
3. int fact=1;
4. for(int i=1;i<=n;i++){
5. fact=fact*i;
6. }
7. System.out.println("factorial is "+fact);
8. }
9. public static void main(String args[]){
10. new Calculation().fact(5);//calling method with anonymous object
11. }
12. }
Output:
Factorial is 120
Access Specifiers
The access modifiers in Java specifies the accessibility or scope of a field, method or class.
We can change the access level of fields, methods, and class by applying the access modifier
on it.
1. Private: The access level of a private modifier is only within the class. It cannot be
accessed from outside the class.
2. Protected: The access level of a protected modifier is within the package and outside
the package through child class. If you do not make the child class, it cannot be
accessed from outside the package.
3. Public: The access level of a public modifier is everywhere. It can be accessed from
within the class, outside the class, within the package and outside the package.
4. Default: The access level of a default modifier is only within the package. It cannot
be accessed from outside the package. If you do not specify any access level, it will be
the default.
Note:
A class cannot be private or protected except nested class
Reference:
1. Java: The Complete Reference
2. Javatpoint
3. Geeksforgeeks