0% found this document useful (0 votes)
89 views

Object-Oriented Programming (CS F213) : BITS Pilani

This document discusses nested and inner classes in Java. It describes two types of nested classes: 1) static nested classes and 2) non-static nested classes. Static nested classes can access outer class fields/methods only through an object reference, while non-static nested classes can directly access outer class fields/methods. Examples are provided to illustrate the differences between static and non-static nested classes.

Uploaded by

SAURABH MITTAL
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
89 views

Object-Oriented Programming (CS F213) : BITS Pilani

This document discusses nested and inner classes in Java. It describes two types of nested classes: 1) static nested classes and 2) non-static nested classes. Static nested classes can access outer class fields/methods only through an object reference, while non-static nested classes can directly access outer class fields/methods. Examples are provided to illustrate the differences between static and non-static nested classes.

Uploaded by

SAURABH MITTAL
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

Object-Oriented Programming (CS F213)

Module III: Inheritance and Polymorphism in Java


CS F213 RL 10.4: Nested and Inner Classes

BITS Pilani Dr. Pankaj Vyas


Department of Computer Science, BITS-Pilani, Pilani Campus
CS F213 RL 10.3 : Topics

Nested Classes

2 Object-Oriented Programming (CS F213)


Nested Class

Class With-in The Boundary of Another Class


Two Forms : 1. Static-Nested Class
2. Non-Static Nested Class
class Outer
{
static class static_nested Static
{ Nested
}// End of class nested_static Class

class non_static_nested Non-Static


{ Nested
}// Endof class non_static_nested Class
}// End of class Outer
3 Object-Oriented Programming (CS F213)
Static Nested Class

Static keyword applied for class declaration


Static Nested class can use the instance-fields/object-methods of
the outer class only through object reference.
Static Nested class can be Accessed outside the outer class
[provided its scope is not private] using the following syntax
<Outer-Class-Name>.<Static-Nested-Class-Name>
To create an object for the static-nested-class, use this syntax:
<Outer-Class-Name>.<Static-Nested-Class-Name> nested-class-instance-name
=
new <Outer-Class-Name>.<Static-Nested-Class-Name>();

OR
<Outer-Class-Name>.<Static-Nested-Class-Name> nested-class-instance-name
=
new <Outer-Class-Name>.<Static-Nested-Class-Name>(<parameters>);

4 Object-Oriented Programming (CS F213)


Static-Nested Class : Example 1
static class B
class A
{
{
int b;
private int a;
B(int b)
A(int a)
{
{
int c = b+10;
this.a =a;
this.b = c;
}
}
void print()
void show()
{
{
System.out.println("a="+a);
// print(); INVALID
}
A a1 = new A(10);
static void display()
a1.print();
{
System.out.println("b="+b);
System.out.println(Outer Class);
display();
}
} // End of Method
} // End of class B
} // End of class A

Static-Nested Class Cannot Invoke


The Object Methods of Outer class Directly
5 Object-Oriented Programming (CS F213)
Static-Nested Class : Example 1

class Test
{
public static void main(String args[])
{
A.B b1 = new A.B(10);
b1.show();
}
}
Output
a=10
b=20
Outer Class
6 Object-Oriented Programming (CS F213)
Non-Static Nested Class

Non-Static-Nested classes do not have static keyword applied


Non-Static-Nested classes can use the instance fields/methods
of the outer class directly.
To create an object for the non-static nested class, use this
syntax:

<Outer-Class-Name>.<Nested-Class-Name> Nested-Class-Object-Reference
=
Outer-Class-Object-Reference.new Nested-Class-Name();
OR
<Outer-Class-Name>.<Nested-Class-Name> Nested-Class-Object-Reference
=
Outer-Class-Object-Reference.new Nested-Class-Name(<parameters>);

7 Object-Oriented Programming (CS F213)


Non-Static Nested Class

An Instance of Non-Static-Nested class can Exists Only Inside


an instance of Outer-Class
So, In order to Create an Instance of Non-Static-Nested class,
You have to First Create an Instance of Outer-Class

8 Object-Oriented Programming (CS F213)


Non-Static-Nested Class :
Example 1
class B
class A
{
{
int b;
private int a;
B(int b)
A(int a)
{
{
int c = b+10;
this.a =a;
this.b = c;
}
}
void print()
void show()
{
{
System.out.println("a="+a);
print();
}
A a1 = new A(10);
static void display()
display();
{
}
System.out.println(Outer Class);
} // End of class B
}
} // End of class A

Non-Static-Nested Class Can Invoke


The Object Methods of Outer class Directly
9 Object-Oriented Programming (CS F213)
Non-Static-Nested Class : Example 1

class Test
{
public static void main(String args[])
{
A.B b1 = new A(20).new B(10);
b1.show();
A a = new A(30);
A.B b2 = a.new B(40);
b2.show();
}
} a=20
Outer Class
a=30
Outer Class
10 Object-Oriented Programming (CS F213)
Non-Static-Nested Class : Example 2

Non-Static-Nested classes can not have static fields and


Methods

// File Name : xyz.java


class A
{
class B xyz.java:6: inner classes cannot
{ have static declarations
private static int c=10; private static int c=10;
B()
^
{
System.out.println("Hello Inner Class");
xyz.java:11: inner classes cannot
} have static declarations
static void display() static void display()
{ ^
System.out.println("Static Method"); 2 errors
}
}// End of class inner class B
}// End of outer class A

11 Object-Oriented Programming (CS F213)


Non-Static-Nested Class : Example 3
class A class B
{ {
private int a; private int b;
private int b=10; B(int b)
A(int a) {
{ this.b =b;
this.a=a; }
} void show()
{
int b=20;
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("this.b="+this.b);
System.out.println("Outer b="+A.this.b);
void show() }// End of Method
{ } // End of B inner class
B b1 = new B(30);
b1.show();
} // End of Method
} // End of Outer class A

12 Object-Oriented Programming (CS F213)


Non-Static-Nested Class : Example 3
class InnerTest
{
public static void main(String args[])
{
A a1 = new A(20);
A.B b1 = a1.new B(-30);
b1.show();

A.B b2 = new A(30).new B(-40);


b2.show();
}
}
a=20 a=30
b=20 b=20
this.b=-30 this.b=-40
Outer b=10 Outer b=10
13 Object-Oriented Programming (CS F213)
Thank You

14 Object-Oriented Programming (CS F213)

You might also like