Oops Unit-1 and Unit-2
Oops Unit-1 and Unit-2
TECHNOLOGY
(Regulations2024)
: Overview of OOP
Main Program
Global Data
Procedure Procedure
Procedure
3(Printing)
1(Reading) 2(Calculation)
Local Data Local Data Local Data
Drawback of POP
Procedural languages are difficult to relate with the real world objects.
Procedural codes are very difficult to maintain, if the code grows larger.
Procedural languages do not have automatic memory management as like in Java.
Hence, it makes the programmer to concern more about the memory
management of the program.
Procedure Oriented
Object Oriented Programming
Programming
Divided Into In POP, program is divided into In OOP, program is divided into
smallparts called functions. partscalled objects.
In POP, Importance is not given In OOP, Importance is given to the
Importance to data but to functions as well data rather than procedures or
as sequence of actions to be functions because it works as a
done. real world.
Approach POP follows Top Down OOP follows Bottom Up
approach. approach.
Access POP does not have any OOP has access specifiers
Specifiers accessspecifier. named Public, Private,
Protected, etc.
In POP, Data can move freely In OOP, objects can move and
Data Moving fromfunction to function in the communicate with each other
system. throughmember functions.
Expansion To add new data and function OOP provides an easy way toadd
in POPis not so easy. newdata and function.
In POP, Most function uses In OOP, data cannot move easily
Data Access Global data for sharing that can from function to function, it canbe
be accessed freely from kept public or private so we can
function to function in the control the access of data.
system.
Data Hiding POP does not have any OOP provides Data Hiding so
proper wayfor hiding data so it provides more security.
is less secure.
In POP, Overloading is not In OOP, overloading is possible in
Overloading possible. the form of Function Overloading
and Operator Overloading.
Examples Examples of POP are: C,VB, Examples of OOP are: C++, JAVA,
FORTRAN, and Pascal. VB.NET, C#.NET.
OOPs simplify the software development and maintenance by providing some concepts:
1. Class:
A class is a collection of similar objects and it contains data and methods that
operate on that data. In other words ― Class is a blueprint or template for a set
of objects that share a common structure and a common behavior. It is a logical
entity.
A class in Java can contain:
fields
methods
constructors
blocks
nested class and interface
2. Object:
Any entity that has state and behavior is known as an object. Object is an instance of
a class.
For example: chair, pen, table, keyboard, bike etc. It can be physical and logical.
The object of a class can be created by using the new keyword in Java
Programminglanguage.
5
3. Encapsulation:
Wrapping of data and method together into a single unit is known as
Encapsulation.
For example: capsule, it is wrapped with different medicines.
In OOP, data and methods operating on that data are combined together
to form a single unit, this is referred to as a Class.
Encapsulation is the mechanism that binds together code and the data it
manipulates and keeps both safe from outside interference and misuse.
The insulation of the data from direct access by the program is called
―data hiding. Since the data stored in an object cannot be accessed directly,
the data is safe i.e.,the data is unknown to other methods and objects.
4. Polymorphism:
Polymorphism is a concept by which we can perform a single action by
different ways. It is the ability of an object to take more than one form.
The word "poly" means many and "morphs" means forms. So polymorphism
meansmany forms.
An operation may exhibit different behaviors in different instances. The
behavior depends on the data types used in the operation.
For Example:- Suppose if you are in a classroom that time you behave like a
student, when you are in the market at that time you behave like a customer,
when you at your home at that time you behave like a son or daughter, Here
one person present in different-different behaviors.
Two types of polymorphism:
1. Compile time polymorphism / Method Overloading: - In this method,
object is bound to the function call at the compile time itself.
2. Runtime polymorphism / Method Overriding: - In this method, object is
bound to the function call only at the run time
5. Abstraction:
Abstraction refers to the act of representing essential features without
including the background details or explanations. i.e., Abstraction means
hiding lower-level details and exposing only the essential and relevant
details to the users.
For Example: - Consider an ATM Machine; All are performing operations on the
ATM machine like cash withdrawal, money transfer, retrieve mini-
statement…etc. but we can't know internal details about ATM.
Abstraction provides advantage of code reuse.
Abstraction enables program open for extension.
In java, abstract classes and interfaces are used to achieve Abstraction.
6. Inheritance:
Inheritance in java is a mechanism in which one object acquires all the
propertiesand behaviors of another object.
The idea behind inheritance in java is that we can create new classes that are
built upon existing classes. When we inherit from an existing class, we can
reuse methods and fields of parent class, and we can add new methods and
fields also.
Inheritance represents the IS-A relationship, also known as parent-
child
relationship.
For example:- In a child and parent relationship, all the properties of a father
areinherited by his son.
Syntax of Java Inheritanc
class Subclass-name extends Superclass-name
{
//methods and fields
}
8
7. Message Passing:
Message Communication:
Objects interact and communicate with each other by sending messages to
eachother. This information is passed along with the message as parameters.
Java Buzzwords
1. Object Oriented:
Java programming is pure object
object-oriented programming language. Like C++,
Javaprovides most of the object oriented features.
Though C++ is also an object oriented language, we can write programs in C++
without aclass but it is not possible to write a Java program without classes.
Example: Printing “Hello” Message.
Java – No programs without classes and
C++ ( can be without class)
objects
With Class: With class:
#include<iostream.h> import java.io.*;
class display { class Hello {
public: public static void main(String args[])
void disp() {
{ System.out.println(“Hello!”);
cout<<”Hello!”; }
} }
};
main() Without class is not possible
{
display d;
d.disp();
}
2. Simple:
Java is Easy to write and more readable and eye catching.
Most of the concepts are drew from C++ thus making Java learning simpler.
3. Secure :
Since Java is intended to be used in networked/distributed environments, lot of
emphasishas been placed on security.
Java provides a secure means of creating Internet applications and to access web
applications.
Java enables the construction of secured, virus-free, tamper-free system.
4. Platform Independent:
Unlike C, C++, when Java program is compiled, it is not compiled into platform-specific
machine code, rather it is converted into platform independent code called bytecode.
The Java bytecodes are not specific to any processor. They can be executed in
anycomputer without any error.
Because of the bytecode, Java is called as Platform Independent.
5. Robust:
Java encourages error-free programming by being strictly typed and performing run-
time checks.
6. Portable:
Java bytecode can be distributed over the web and interpreted by Java Virtual
Machine (JVM)
Java programs can run on any platform (Linux, Window, Mac)
Java programs can be transferred over world wide web (e.g applets)
7. Architecture Neutral:
Java is not tied to a specific machine or operating system architecture.
Machine Independent i.e Java is independent of hardware.
Bytecode instructions are designed to be both easy to interpret on any machine and
easilytranslated into native machine code.
11
11. Multithreaded:
Java provides integrated support for multithreaded programming.
Using multithreading capability, we can write programs that can do many tasks
simultaneously.
The benefits of multithreading are better responsiveness and real-time behavior.
12. Distributed:
Java is designed for the distributed environment for the Internet because it handles
TCP/IP protocols.
Java programs can be transmit and run over internet.
: Overview of Java
1. BYTECODE:
Byte code is an intermediate code generated from the source code by java compiler
and it is platform independent.
2. Applet programs:
Applets are small Java programs developed for Internet applications. An
applet located in distant computer can be downloaded via Internet and executed
on a local computer using Java capable browser. The Java applets can also be
executed in the command line using appletviewer, which is part of the JDK.
A Java source file is a plain text file containing Java source code and having
.java extension. The .java extension means that the file is the Java source file. Java source
code file contains source code for a class, interface, enumeration, or annotation type.
There are some rules associated to Java source file.
Of the above Sections shown in the figure, the Main Method class is Essential part,
Documentation Section is a suggested part and all the other parts are optional.
Documentation Section
It Comprises a Set of comment lines giving the name of the program, the authorand
other details.
Package Statement
The first statement allowed in a Java file is a package statement.
It declares the package name and informs the compiler that the classes defined
belong to this package.
Example :
package student;
package basepackage.subpackage.class;
It is an optional declaration.
Import Statements
The statement instructs the interpreter to load a class contained in a particular
package.
Example :
import student.test;
Where, student is the package and test is the class.
Interface Statements
An interface is similar to classes which consist of group of method declaration.
Like classes, interfaces contain methods and variable.
To link the interface to our program, the keyword implements is used.
Example:
public class xx extends Applet implements ActionListener
where, xx – class name (subclass of Applet)Applet – Base class name
ActionListener – interface Extends & implements - keywords
It is used when we want to implement the feature of Multiple Inheritance in Java
It is an optional declaration.
Class Definitions
A Java Program can have any number of class declarations.
About Java programs, it is very important to keep in mind the following points.
Case Sensitivity - Java is case sensitive, which means identifier Hello and hellowould
have different meaning in Java.
Class Names - For all class names the first letter should be in Upper Case.
If several words are used to form a name of the class, each inner word's first letter should
be in Upper Case.
Example class MyFirstJavaClass
Method Names - All method names should start with a Lower Case letter.
If several words are used to form the name of the method, then each inner word's first
letter should be in Upper Case.
Example public void myMethodName()
Program File Name - Name of the program file should exactly match the classname.
When saving the file, you should save it using the class name (Remember Java is case
sensitive) and append '.java' to the end of the name (if the file name and theclass name do
not match your program will not compile).
Example : Assume 'MyFirstJavaProgram' is the class name. Then the file shouldbe saved a
'MyFirstJavaProgram.java'
public static void main(String args[]) - Java program processing starts from the
main() method which is a mandatory part of every Java program.
At compile time, java file is compiled by Java Compiler (It does not interact with
OS) andconverts the java code into bytecode.
Class Loader : is the subsystem of JVM that is used to load class files.
Bytecode Verifier : checks the code fragments for illegal code that can violate access
right to objects
Interpreter : read bytecode stream then execute the instructions.
Program Explanation:
public is the access specifier, class is a keyword and HelloWorld is the class name. {
indicates the start of program block and } indicates the end of the program block.
System.out.println() – is the output statement to print some message on the screen.
Here, System is a predefined class that provides access to the system, out is the output
stream that is connected to the console and println() is method to display the given
string.
Example 2: A Second Java Program:
Output:
Enter a Number: 25
The value of 25 * 2 = 50
Data type is used to allocate sufficient memory space for the data. Data types
specify the different sizes and values that can be stored in the variable.
Java is a strongly Typed Language.
Definition: strongly Typed Language:
Java is a strongly typed programming language because every variable must be declared
with a data type. A variable cannot start off life without knowing the range of values it can
hold, and once it is declared, the data type of the variable cannot change.
1. Primitive Types:
Primitive data types are those whose variables allow us to store only one value and
neverallow storing multiple values of same type. This is a data type whose variable
can hold maximum one value at a time.
There are eight primitive types in Java:
Integer Types:
1. int
2. short
3. lomg
4. byte
Floating-point Types:
5. float
6. double
Others:
7. char
8. Boolean
Integer Types:
The integer types are form numbers without fractional parts. Negative values are
allowed.Java provides the four integer types shown below:
Storage Default
Type Range Example
Requirement Value
-2,147,483,648(-2^31)
int a = 100000,
int 4 bytes to 0
int b = -200000
2,147,483,647 (2^31-1)
short s = 10000,
short 2 bytes -32,768 (-2^15) to 32,767 (2^15-1) 0
short r = -20000
-9,223,372,036,854,775,808 (-2^63)
long a = 100000L,
long 8 bytes to 0L
int b = -200000L
9,223,372,036,854,775,808 (2^63-1)
byte a = 100 ,
byte 1 byte -128 (-2^7) to 127 (2^7-1) 0
byte b = -50
Floating-point Types:
The floating-point types denote numbers with fractional parts. The
two floating-pointtypes are shown below:
Storage Default
Type Range Example
Requirement Value
Approximately ±3.40282347E+38F
float 4 bytes float f1 =234.5f 0.0f
(6-7 significant decimal digits)
Approximately
double d1 =
double 8 bytes ±1.79769313486231570E+308 0.0d
123.4
(15 significant decimal digits)
char:
char data type is a single 16-bit Unicode character.
Minimum value is '\u0000' (or 0).
Maximum value is '\uffff' (or 65,535 inclusive).
Char data type is used to store any character.
Example: char letterA ='A'
boolean:
boolean data type represents one bit of information.
There are only two possible values: true and false.
This data type is used for simple flags that track true/false conditions.
Default value is false.
Example: boolean one = true
These are the data type whose variable can hold more than one value of similar
type.
The value of a reference type variable, in contrast to that of a primitive type,
is a reference to (an address of) the value or set of values represented by
the variable.
Example
int a[] = {10,20,30}; // valid
int b[] = {100, 'A', "ABC"}; // invalid
Animal animal = new Animal("giraffe"); //Object
: JAVA - VARIABLES
A Variable is a named piece of memory that is used for storing data in java
Program.
A variable is an identifier used for storing a data value.
A Variable may take different values at different times during the execution
if the program, unlike the constants.
The variable's type determines what values it can hold and what
operations can beperformed on it.
Syntax to declare variables:
datatype identifier [=value][,identifier [ =value] …];
Initializing Variables:
After the declaration of a variable, it must be initialized by means of assignment
statement.
It is not possible to use the values of uninitialized variables.
int months;
months=1;
int months=12;
Dynamic Initialization of a Variable:
Java allows variables to be initialized dynamically using any valid expression at the
timethe variable is declared.
class FindRemainer
{
public static void main(String arg[]) {int num=5,den=2;
int rem=num%den; System.out.println(―Remainder is ―+rem);
}
}
Output:
Remainder is 1
In the above program there are three variables num, den and rem. num and den ate
initialized by constants whereas rem is initialized dynamically by the modulo division
operation on num and den.
Access modifiers cannot be Access modifiers can be used Access modifiers can be
used for local variables. forinstance variables. used for class variables.
class area
{
int length=20;
int breadth=30;
static int classvar=2500;void
calc()
{
int areas=length*breadth;
System.out.println(“The area is “+areas+” sq.cms”);
}
Program Explanation:
Class name: area
Method names: calc() and main()
Local variables: areas (accessed only in the particular method)
Instance variables: length and breadth (accessed only through the object‘s method)
Static variable: accessed anywhere in the program, without object reference
: ARRAYS
Definition:
An array is a collection of similar type of elements which has contiguous
memory location.
Java array is an object which contains elements of a similar data type.
Additionally, The elements of an array are stored in a contiguous memory location.
It is a data structure where we store similar elements. We can store only a fixed set of
elements in a Java array.
Array in Java is index-based, the first element of the array is stored at the 0th index, 2nd
element is stored on 1st index and so on.
29
Advantage of Array:
• Code Optimization: It makes the code optimized; we can retrieve or sort the data
easily.
• Random access: We can get any data located at any index position.
Disadvantage of Array:
Size Limit: We can store only fixed size of elements in the array. It doesn't growits
size at runtime.
Types of Array:
There are two types of array.
1. One-Dimensional Arrays
2. Multidimensional Arrays
1. One-Dimensional Array:
Creating an array:
Three steps to create an array:
1. Declaration of the array
2. Instantiation of the array
3. Initialization of arrays
Example:
int[] floppy; (or) int []floppy (or) int floppy[];
Definition:
Allocating memory spaces for the declared array in memory (RAM) is called as
Instantiation of an array.
Syntax:
arrayRefVar=new datatype[size];
3. Initialization of arrays:Definition:
Definition:
Storing the values in the array element is called as Initialization of arrays.
Example:
floppy[0]=20;
Example 1:
int regno[]={101,102,103,104,105,106};
int reg[]=regno;
ARRAY LENGTH:
The variable length can identify the length of array in Java. To find the number of
elements of an array, use array.length.
Example1:
int regno[10]; len1=regno.length;
32
DOWNLOADED FROM STUCOR APP
Example 2:
for(int i=0;i<reno.length;i++)
System.out.println(regno[i]);
Following picture represents array myList. Here, myList holds ten double values and
the indicesare from 0 to 9.
class Array
{
public static void main(String[] args)
{
int month_days[];
month_days=new int[12];
month_days[0]=31;
month_days[1]=28;
month_days[2]=31;
month_days[3]=30;
month_days[4]=31;
month_days[5]=30;
month_days[6]=31;
month_days[7]=31;
month_days[8]=30;
month_days[9]=31;
month_days[10]=30;
month_days[11]=31;
Output:
max = myList[0];
for (int i = 1; i < myList.length; i++)
{
if (myList[i] > max)
max = myList[i];
}
System.out.println("Max is " + max);
}
}
Output:
1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5
2. Multidimensional Arrays:
Definition:
Multidimensional arrays are arrays of arrays. It is an array which uses more than
one index to access array elements. In multidimensional arrays, data is stored in
row and column based index (also known as matrix form).
int[][] arr=new int[3][3]; //3 row and 3 column - internally this matrix is implemented as arrays of arrays of int.
arr[0][0]=1;
arr[0][1]=2;
arr[0][2]=3;
37
arr[1][0]=4;
arr[1][1]=5;
arr[1][2]=6;
arr[2][0]=7;
arr[2][1]=8;
arr[2][2]=9;
class twoDarray
{
public static void main(String args[])
{
int array1[][]=new int[4][5];// declares an 2D array.
int array2[][]={{1,2,3},{2,4,5},{4,4,5}}; //declaring and initializing 2D arrayint i,j,k=0;
// printing 2D array2
System.out.println("-------Array 2 -------");
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
System.out.print(array2[i][j]+
}
System.out.println();
}
}
}
Output:
-------------Array1------------
01234
56789
10 11 12 13 14
15 16 17 18 19
-------------Array2------------
123
245
445
It means that, when we allocate memory for a multidimensional array, we need to only
specify the memory for the first (leftmost) dimension. We can allocate the remaining
dimensions separately with different sizes.
class twoDarray
{
public static void main(String args[])
{
int array1[][]=new int[4][]; // declares an 2D array.
array1[0]=new int[1];
array1[1]=new int[2];
array1[2]=new int[3];
array1[3]=new int[4];
int i,j,k=0;
}
System.out.println();
}
}
}
Output:
0
12
345
6789
: OPERATORS
1. class OperatorExample
2. {
3. public static void main(String args[])
4. {
5. int x=10;
6. System.out.println(x++); //10 (11)
7. System.out.println(++x); //12
8. System.out.println(x--); //12 (11)
9. System.out.println(--x); //108.
10.}
11.}
Output:
10
12
12
10
1. class OperatorExample
2. {
3. public static void main(String args[])
4. {
5. int a=10;
6. int b=10;
7. System.out.println(a++ + ++a); //10+12=22
8. System.out.println(b++ + b++); //10+11=21 7.
9. }
10. }
Output:
22
21
Output:
-11
9
False
true
If the value already exists in the variable it is overwritten by the assignment operator
(=).
Output:
14
16
Output:
21
3. Relational Operators
Relational operators in Java are used to compare 2 or more objects. Java provides
sixrelational operators: Assume variable A holds 10 and variable B holds 20, then:
Checks if the value of left operand is greater than or equal tothe (A >= B) is not
>= value of right operand, if yes then condition becomes true. true.
Example:
public RelationalOperatorsDemo( )
{
int x = 10, y = 5;
System.out.println("x > y : "+(x > y));
System.out.println("x < y : "+(x < y));
System.out.println("x >= y : "+(x >= y));
System.out.println("x <= y : "+(x <= y));
System.out.println("x == y : "+(x == y));
System.out.println("x != y : "+(x != y));
Output:
$java RelationalOperatorsDemo
x > y : true
x < y : false
x >= y : true
x <= y : false
x == y : false
x != y : true
4. Logical Operators
Logical operators return a true or false value based on the state of the Variables. Given
that x and y represent boolean expressions, the boolean logical operators are defined
in the Table below.
x&y x|y
x y !x x && y x || y x^y
true true false true true False
true false false false true true
false true true false true true
false false true false false false
Example:
public class LogicalOperatorsDemo
{
public LogicalOperatorsDemo()
{
boolean x = true;
boolean y = false;
System.out.println("x & y : " + (x & y));
System.out.println("x && y : " + (x && y));
System.out.println("x | y : " + (x | y));
System.out.println("x || y: " + (x || y));
System.out.println("x ^ y : " + (x ^ y));
System.out.println("!x : " + (!x));
}
public static void main(String args[])
{
new LogicalOperatorsDemo();
}
}
Output:
$java LogicalOperatorsDemo
x & y : false
x && y : false
x | y : true
x || y: true
x ^ y : true
!x : false
5. Bitwise Operators
Java provides Bit wise operators to manipulate the contents of variables at the bit level.
The result of applying bitwise operators between two corresponding bits in the
operandsis shown in the Table below.
1 1 0 1 1 0
1 0 0 0 1 1
0 1 1 0 1 1
0 0 1 0 0 0
Output:
$java Test
a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2 = 15
a >>> 2 = 15
Output:
13
9
18
9
7. Conditional Operators
The Conditional operator is the only ternary (operator takes three arguments)
operator in Java. The operator evaluates the first argument and, if true, evaluates the
second argument.
If the first argument evaluates to false, then the third argument is evaluated. The
conditional operator is the expression equivalent of the if-else statement.
The conditional expression can be nested and the conditional operator associates from
right to left: (a?b?c?d:e:f:g) evaluates as (a?(b?(c?d:e):f):g)
Example:
public TernaryOperatorsDemo() {
int x = 10, y = 12, z = 0;
z = x > y ? x : y;
System.out.println("z : " + z);
Output:
$java TernaryOperatorsDemo
z : 12
8. instanceof Operator:
This operator is used only for object reference variables. The operator checks whether
the object is of a particular type(class type or interface type). instanceof operator is
written as:
( Object reference variable ) instanceof (class/interface type)
If the object referred by the variable on the left side of the operator passes the IS-A
check for the class/interface type on the right side, then the result will be true.
Following is the
Example:
public class Test
{
public static void main(String args[])
{
String name = "James";
// following will return true since name is type of String
boolean result = name instanceof String;
System.out.println( result );
}
}
OPERATOR PRECEDENCE:
The order in which operators are applied is known as precedence. Operators with a higher
precedence are applied before operators with a lower precedence.
The operator precedence order of Java is shown below. Operators at the top of the table
are applied before operators lower down in the table.
If two operators have the same precedence, they are applied in the order they appear in a
statement. That is, from left to right. You can use parentheses to override the default
precedence.
Example:
First (5 * 3) is evaluated and the result is added to 4 giving the Final Result value as 19.
Note that ‗*‘ takes higher precedence than ‗+‘ according to chart shown above. This kindof
precedence of one operator over another applies to all the operators.
: CONTROL-FLOW STATEMENTS
Java Control statements control the order of execution in a java program, based on data
values and conditional logic.
There are two types of decision making statements in Java. They are:
if statements
if-else statements
nested if statements
if-else if-else statements
switch statements
if Statement:
An if statement consists of a Boolean expression followed by one or more
statements.
Block of statement is executed when the condition is true otherwise no
statement will beexecuted.
Syntax:
if(<conditional expression>)
{
< Statement Action>
}
If the Boolean expression evaluates to true then the block of code inside the if statement
will be executed.
If not the first set of code after the end of the if statement (after the closingcurly brace) will
be executed.
Flowchart:
Example:
Output:
$java IfStatementDemo
b>a
if-else Statement:
The if/else statement is an extension of the if statement. If the statements in the
51
if(<conditional expression>)
{
< Statement Action1>
}
else
{
< Statement Action2>
}
Example:
public class IfElseStatementDemo {
Output:
$java IfElseStatementDemo
b>a
Nested if Statement:
Nested if-else statements, is that using one if or else if statement inside
another if or else ifstatement(s).
Syntax:
if(condition1)
{
if(condition2)
{
//Executes this block if condition is True
}
else
{
//Executes this block if condition is false
}
}
else
{
//Executes this block if condition is false
}
Example-nested-if statement:
class NestedIfDemo
{
53
if(Boolean_expression 1){
//Executes when the Boolean expression 1 is true
}else if(Boolean_expression 2){
//Executes when the Boolean expression 2 is true
}else if(Boolean_expression 3){
//Executes when the Boolean expression 3 is true
}else {
//Executes when the none of the above condition is true.
}
Example:
public class Test {
public static void main(String args[]){
int x = 30;
if( x == 10 ){
System.out.print("Value of X is 10");
}else if( x == 20 ){
System.out.print("Value of X is 20");
}else if( x == 30 ){
System.out.print("Value of X is 30");
}else{
System.out.print("This is else statement");
}
}
}
Output:
Value of X is 30
switch Statement:
The switch case statement, also called a case statement is a multi
multi-way
branch with several choices.
choices. A switch is easier to implement than a
series of if/else statements.
A switch statement allows a variable to be tested for equality against a list of
55
values. Eachvalue is called a case, and the variable being switched on is checked
for each case.
The switch statement begins with a keyword, followed by an expression that
equates to a no long integral value. Following the controlling expression is a
code block that contains zero or more labeled cases. Each label must equate to
an integer constant and each must be unique.
When the switch statement executes, it compares the value of the controlling
expression to the values of each case label.
The program will select the value of the case label that equals the value of the
controllingexpression and branch down that path to the end of the code block.
If none of the case label values match, then none of the codes within the
switch statementcode block will be executed.
Java includes a default label to use in cases where there are no matches.
We can have a nested switch within a case block of an outer switch.
Syntax:
switch (<expression>)
{
case label1:
<statement1>
case label2:
<statement2>
…
case labeln:
<statementn>
default:
<statement>
}
Example:
status = 3;
}
switch (status) {case 1:
System.out.println("a is the greatest");break;
case 2:
System.out.println("b is the greatest");break;
case 3:
System.out.println("c is the greatest");break;
default:
System.out.println("Cannot be determined");
}
}
}
Output:
c is the greatest
The while statement is a looping control statement that executes a blockof code while
a condition is true. It is entry controlled loop.
You can either have a single statement or a block of code within the while loop.The
loop will never be executed if the testing expression evaluates to false.
The loop condition must be a boolean expression.
Syntax:
The syntax of the while loop is
<statements>
Example:
4
5
6
7
8
9
10
Syntax:
do
<loop body>
}while (<loop condition>);
Example:
public class DoWhileLoopDemo {
public static void main(String[] args)
{
60
int count = 1;
System.out.println("Printing Numbers from 1 to 10");
do {
System.out.println(count++);
} while (count <= 10);
}
}
Output:
For Loops
The for loop is a looping construct which can execute a set of
instructions a specified number of times. It‘s a counter controlled loop.
A for statement consumes the initialization, condition and
increment/decrement in one line. It is the entry controlled loop.
Syntax:
for (<initialization>; <loop condition>; <increment expression>)
{
<loop body>
}
The third part of the for statement is the body of the loop. These are the
instructionsthat are repeated each time the program executes the loop.
The final part of the for statement is an increment expression that
automatically executes after each repetition of the loop body. Typically,
this statement changes the value of the counter, which is then tested
to see if the loop should continue.
Exmple:
public class ForLoopDemo {
public static void main(String[] args)
{
System.out.println("Printing Numbers from 1 to
10");
for (int count = 1; count <= 10; count++)
{
System.out.println(count);
}
}
}
Output:
Printing Numbers from 1 to 10
1
2
3
4
5
6
7
8
9
10
Syntax:
for(declaration : expression)
//Statements
Example:
for(int x : numbers )
{
System.out.print( x );
System.out.print(",");
}
System.out.print("\n\n");
String [] names ={"B", "C", "C++", "JAVA"};
for( String name : names )
{
System.out.print( name );
System.out.print(",");
}
}
}
Output:
10,20,30,40,50,
B,C,C++,JAVA
1. break statement
2. continue statement
break;
Flowchart:
Example:
public static void main(String args[]) { int [] numbers = {10, 20, 30, 40, 50};
Output:
10
20
Example:
for(int x : numbers )
{
if( x == 30 )
{
continue;
}
System.out.print( x );
System.out.print("\n");
}
}
}
Output:
10
20
40
50
A class is a collection of similar objects and it contains data and methods that operate
on that data. In other words ― Class is a blueprint or template for a set of objects
that share a common structure and a common behavior.
DEFINING A CLASS:
The keyword class is used to define a class.
Rules to be followed:
1. Classes must be enclosed in parentheses.
2. The class name, superclass name, instance variables and method names may be any
validJava identifiers.
3. The instance variable declaration and the statements of the methods must end
with ;(semicolon).
4. The keyword extends means derived from i.e. the class to the left of the
extends
(subclass) is derived from the class to the right of the extends (superclass).
The data, or variables, defined within a class are called instance variables.
The code to do operations is contained within methods.
Collectively, the methods and variables defined within a class are called members of
Example:
class box {
double width;
double height;
double depth;
void volume()
{
System.out.println( \n Volume is : );
Systme.out.println(width*height*depth);
}
}
Program Explanation:
Class : keyword that initiates a class definition
Box : class name
Double : primitive data type
Height, depth, width: Instance variables
Void : return type of the method
Volume() : method name that has no parameters
DEFINING OBJECTS
An Object is an instance of a class. It is a blending of methods and data.
It is a structured set of data with a set of operations for manipulating that data.
The methods are the only gateway to access the data. In other words, the methods
and dataare grouped together and placed in a container called Object.
Characteristics of an object:
An object has three characteristics:
1) State: represents data (value) of an object.
2) Behavior: represents the behavior (functionality) of an object such as deposit,
withdraw etc.
3) Identity: Object identity is an unique ID used internally by the JVM to identify
each object uniquely.
For Example: Pen is an object. Its name is Reynolds, color is white etc. known
CREATING OBJECTS:
Obtaining objects of a class is a two-step process:
1. Declare a variable of the class type – this variable does not define an object. Instead,it
is simply a variable that can refer to an object.
2. Use new operator to create the physical copy of the object and assign the referenceto
the declared variable.
NOTE: The new operator dynamically allocates memory for an object and returns a
referenceto it. This reference is the address in memory of the object allocated by new.
Advantage of using new operator: A program can create as many as objects it needs
duringthe execution of the program.
Syntax:
class_name object_name = new class_name();
(or)
class_name object_name;
object_name = new class_name();
Example:
box b1=new box();(or)
box b2; b2=new box();
object_name.variable_name;
object_name.method_name(parameter_list);
Example:
class box
{
double width;
double height;
Output:
: METHODS
DEFINITION :
A Java method is a collection of statements that are grouped together to perform an
operation.
Syntax: Method:
modifier Return –type method_name(parameter_list) throws exception_list
{
// method body
}
modifier: It defines the access type of the method and it is optional to use.
returnType: Method may return a value.
Method_name: This is the method name. The method signature consists of the
methodname and the parameter list.
Parameter List: The list of parameters, it is the type, order, and number of
parameters of a method. These are optional, method may contain zero
parameters.
method body: The method body defines what the method does with statements.
Example:
This method takes two parameters num1 and num2 and returns the maximum between
the two:
METHOD CALLING (Example for Method that takes parameters and returning
value):
For using a method, it should be called.
: CONTRUCTORS
Definition:
Constructor is a special type of method that is used to initialize the object.
Constructor is invoked at the time of object creation. Once defined, the constructor is
automatically called immediately after the object is created, before the new operator
completes.
1. All data fields are initialized to their default value (0, false or null).
2. All field initializers and initialization blocks are executed, in the order in
which theyoccur in the class declaration.
3. If the first line of the constructor calls a second constructor, then the
body of thesecond constructor is executed.
4. The body of the constructor is executed.
Types of constructors
1. Default Constructor
Default constructor refers to a constructor that is automatically created by
compilerin the absence of explicit constructors.
Example:
class student
{
int id;
String name;
void display()
{
System.out.println(id+" "+name);
}
public static void main(String args[])
{
student s1=new student();
student s2=new student();
s1.display();
s2.display();
}
}
74
Output:
0 null
1 null
2) No-Argument Constructor
Constructor without parameters is called no-argument constructor.
Classname()
{
// Constructor body
}
Example:
class Box
{
double width;
double height;
double depth;
Constructing Box
Constructing Box
Volume is 1000.0
Volume is 1000.0
As you can see, both mybox1 and mybox2 were initialized by the Box( )
constructor when they were created. Since the constructor gives all boxes
the same dimensions, 10 by 10 by 10, both mybox1 and mybox2 will have
the same volume.
3. Parameterized Constructor
A constructor that takes parameters is known as parameterized constructor.
Example:
class Box
{
double width;
double height;
double depth;
vol=mybox1.volume();
System.out.println(“Volume is ” +vol);
Output:
Volume is 3000.0
Volume is 162.0
As you can see, each object is initialized as specified in the parameters to its
constructor. Forexample, in the following line,
Box mybox1 = new Box(10, 20, 15);
the values 10, 20, and 15 are passed to the Box( ) constructor when new creates the
object. Thus,
mybox1‘s copy of width, height, and depth will contain the values 10, 20, and 15,
respectively.
“this” KEYWORD:
Definition:
In java, this is a reference variable that refers to the current object.
It is illegal in Java to declare two local variables with the same name inside the same or
enclosing scopes.
We can also have local variables, which overlap with the names of the class‘ instance
78
variables.
However, when a local variable has the same name as an instance variable, the
local variable hides the instance variable.
We can use “this” keyword to to resolve any namespace collisions that might occur
betweeninstance variables and local variables.
Example:
class Student
{
int rollno;
String name;
float fee;
Student(int rollno,String name,float fee)
{
this.rollno=rollno;
this.name=name;
this.fee=fee;
}
void display()
{
System.out.println(rollno+" "+name+" "+fee);
}
}
class TestThis2
{
public static void main(String args[])
{
Student s1=new Student(111,"ankit",5000f);
Student s2=new Student(112,"sumit",6000f);
s1.display();
s2.display();
}
}
Output:
ankit 5000
sumit 6000
CONSTRUCTOR OVERLOADING:
Definition:
Constructor overloading is a technique in Java in which a class can have any
number of constructors that differ in parameter lists. The compiler differentiates
these constructors by taking into account the number of parameters in the list and
their type.
class ConsOverloadDemo
{
public static void main(String arg[])
{
// declare, allocate and initialize Box objects
Box mybox1=new Box(10,20,15);
Box mybox2=new Box();
Box mybox3=new Box(7);
double vol;
Output:
As we can see, the proper overloaded constructor is called based upon the
parameters specifiedwhen new is executed.
CONSTRUCTOR CHAINING:
Constructor chaining is the process of calling one constructor of a class from
another constructor of the same class or another class using the current object
of the class.
It occurs through inheritance.
o Within the same class: If we want to call the constructor from the same class, then
we use this keyword.
From the base class: If we want to call the constructor that belongs to different
classes (parent and child classes), we use the super keyword to call the constructor
from the base class.
Advantage:
Avoids duplicate code while having multiple constructors.
Makes code more readable
Example
class Shape
{
int radius,length,breadth;
Shape(int radius)
{
this.radius=radius;
}
83
void areaCircle()
{
System.out.println("Area of Circle is "+(3.14*radius*radius));
}
void areaRectangle()
{
System.out.println("Area of Rectangle is "+(length*breadth));
}
}
public class ConstructorChaining
{
public static void main(String arg[])
{
Shape s1=new Shape(5,10,50);
s1.areaCircle();
s1.areaRectangle();
}
}
Output:
: ACCESS SPECIFIERS
Definition:
Access specifiers are used to specify the visibility and accessibility of a class
constructors, member variables and methods.
Java classes, fields, constructors and methods can have one of four
different accessmodifiers:
1. Public
2. Private
3. Protected
4. Default (package)
Z:\MyPack\FirstClass.java
package MyPack;
Z:\MyPack2\SecondClass.java
package MyPack2;
import MyPack.FirstClass;
class SecondClass extends FirstClass {
void method()
{
System.out.println(i); // No Error: Will print "I am public variable".
System.out.println(j); // No Error: Will print “I am protected variable”.
System.out.println(k); // Error: k has private access in FirstClass
System.out.println(r); // Error: r is not public in FirstClass; cannot be accessed
// from outside package
}
Output:
I am public variable
I am protected variable
: “static” MEMBERS:
Static Members are data members (variables) or methods that belong to a static
or non-static class rather than to the objects of the class. Hence it is not necessary
to create object of that class to invoke static members.
Static Variable:
When a member variable is declared with the static keyword, then it is called
static variable and it can be accessed before any objects of its class are created,
and without reference to any object.
Syntax to declare a static variable:
[access_spefier] static data_type instance_variable;
When a static variable is loaded in memory (static pool) it creates only a single copy
of static variable and shared among all the objects of the class.
A static variable can be accessed outside of its class directly by the class name
anddoesn‘t need any object.
Syntax : <class-name>.<variable-name>
Static Method:
If a method is declared with the static keyword , then it is known as static
method.
A static method belongs to the class rather than the object of a class.
A static method can be invoked without the need for creating an instance of a class.
A static method can access static data member and can change the value of it.
o Syntax: (defining static method)
[access_specifier] static Return_type method_name(parameter_list)
// method body
The most common example of a static member is main( ). main( ) is declared as static
because it must be called before any objects exist.
Static Block:
Static block is used to initialize the static data member like constructors
helps toinitialize instance members and it gets executed exactly once, when the
class is first loaded.
It is executed before main method at the time of class loading in JVM.
Syntax:
class classname
{
static
{
// block of statements
}
}
The following example shows a class that has a static method, some static variables,
and a static
initialization block:
1. class Student
2. {
3. int rollno;
4. String name;
5. static String college = "ITS";
6. //static method to change the value of static variable
7. static void change(){
8. college = "BBDIT";
9. }
10. //constructor to initialize the variable
11. Student(int r, String n){
12. rollno = r;
13. name = n;
14. }
15. //method to display values
16. void display()
17. {
18. System.out.println(rollno+" "+name+" "+college);
19. }
20. }
21. //Test class to create and display the values of object
22. public class TestStaticMembers
23. {
24. static
25. {
26. System.out.println(―*** STATIC MEMBERS – DEMO ***‖);
27. }
28.
29. public static void main(String args[])
30. {
31. Student.change(); //calling change method
32. //creating objects
33. Student s1 = new Student(111,"Karan");
34. Student s2 = new Student(222,"Aryan");
35. Student s3 = new Student(333,"Sonoo");
36. //calling display method
37. s1.display();
38. s2.display();
39. s3.display();
40. }
41. }
: JavaDoc Comments
Definition:
Javadoc is a tool which comes with JDK and it is used for generating Java code
documentation in HTML format from Java source code. Java documentation can be
created as part of the source code.
Input: Java source files (.java)
Individual source files
Root directory of the source files
Output: HTML files documenting specification of java code
One file for each class defined
Package and overview files
Format:
A Javadoc comment precedes similar to a multi-line comment except that it
beginswith a forward slash followed by two asterisks (/**) and ends with a
*/
Each /** . . . */ documentation comment contains free-form text followed by
tags.
A tag starts with an @, such as @author or @param.
The first sentence of the free-form text should be a summary statement.
The javadoc utility automatically generates summary pages that extract
thesesentences.
In the free-form text, you can use HTML modifiers such as <em>...</em>
foremphasis, <code>...</code> for a monospaced ―typewriter
font, <strong>...</strong> for strong emphasis, and even <img ...> to include
an image.
Example:
/**
This is a <b>doc</b> comment.
*/
TYPES OF COMMENTS:
1. Class Comments
The class comment must be placed after any import statements, directly before the
classdefinition.
Example:
import java.io.*;
/** class comments should be written here */Public class sample
{
….
}
2. Method Comments
The method comments must be placed immediately before the method that it
describes.
Tags used:
Example:
3. Field Comments
Field comments are used to document public fields—generally that means static
constants.
For example:
/**
* Account number
*/
public static final int acc_no = 101;
4. General Comments
@see This tag adds a hyperlink in the ―see also @see reference
section. It can be used with both classes and
methods. Here, reference can be one of the
following:
package.class#feature label
<a ref="...">label</a>
"text"
Example:
@see ―Core java 2
@see <a href=222.java.com>Core Java</a>
COMMENT EXTRACTION
Here, docDirectory is the name of the directory where you want the HTML files to go.
1. Change to the directory that contains the source files you want to document.
2. To create the document API, you need to use the javadoc tool followed by
java file name.There is no need to compile the javafile.
Here, docDirectory is the name of the directory where you want the HTML files to go.
Example:
/**
* <h1>Find average of three numbers!</h1>
* The FindAvg program implements an application that
* simply calculates average of three integers and Prints
* the output on the screen.
*
* @author Pratik Agarwal
* @version 1.0
* @since 2017-02-18
*/
public class FindAvg
{
/**
* This method is used to find average of three integers.
* @param numA This is the first parameter to findAvg method
* @param numB This is the second parameter to findAvg method
* @param numC This is the third parameter to findAvg method
* @return int This returns average of numA, numB and numC.
*/
public int findAvg(int numA, int numB, int numC)
{
return (numA + numB + numC)/3;
}
/**
* This is the main method which makes use of findAvg method.
* @param args Unused.
* @return Nothing.
*/
OUTPUT:
: Additional Topics
Comments, Literals, Keywords, Type Conversion, Garbage
Collection, Command Line Arguments
: JAVA – COMMENTS
: JAVA - CONSTANTS
: JAVA - IDENTIFIERS
Identifiers are names given to the variables, classes, methods, objects, labels,
package and interface in our program.
The name we are giving must be meaningful and it may have random length.
The following rule must be followed while giving a name:
1. The first character must not begin with a number.
2. The identifier is formed with alphabets, number, dollar sign ($) and underscore
(_).
3. It should not be a reserved word.
4. Space is not allowed in between the identifier name.
Example:
String name = "Homer Jay Simpson";
int weight = 300;
double height = 6;
There are some words that you cannot use as object or variable names in a Java
program. These words are known as reserved words; they are keywords that are
already used by the syntax of the Java programming language.
For example, if you try and create a new class and name it using a reserved word:
// you can't use finally as it's a reserved word!
class finally {
public static void main(String[] args)
{
Type Conversion is the task of converting one data type into another data type.
float sum=10;
int s=sum; // s is smaller than sum, So we need to go for explicit conversion.
Example:
class conversion {
public static void main(String arg[])
{
byte b;
int i=257;
double d=323.142;
Output:
Conversion of int to byte:
i and b : 257 , 1
Conversion of int to byte:
d and i : 323.142 , 323
Conversion of int to byte:
d and b : 323.142 , 67
Value of P = 20
: GARBAGE COLLECTION
Since objects are dynamically allocated by using the new operator, you might be
wondering how such objects are destroyed and their memory released for later
reallocation.
In some languages, such as C++, dynamically allocated objects must be manually
released by use of a delete operator.
Finalization:
Sometimes an object will need to perform some action when it is destroyed. For
example, if an object is holding some non-Java resource such as a file handle or
character font, then you might want to make sure these resources are freed before
an object is destroyed.
To handle such situations, Java provides a mechanism called finalization. By using
finalization, you can define specific actions that will occur when an object is just
about tobe reclaimed by the garbage collector.
Finalize() method:
A finalize() method is a method that will be called by the garbage collector on an
object when garbage collection determines that there are no more references to the
object.
Inside the finalize( ) method, we will specify those actions that must be performed
before anobject is destroyed.
Example:
Output:
object is garbage collectedobject is garbage collected
Sometimes you will want to pass information into a program when you run it.
This isaccomplished by passing command-line arguments to main( ).
To access the command-line arguments inside a Java program is quite easy—they are
stored as strings in a String array passed to the args parameter of main( ).
The first command-line argument is stored at args[0], the second at args[1], and so
on.
For example, the following program displays all of the command-line arguments that
it iscalled with:
// Display all command-line arguments.
class CommandLine
{
public static void main(String args[])
{
for(int i=0; i<args.length; i++)
System.out.println("args[" + i + "]: " + args[i]);
}
}
args[0]: this
args[1]: is
args[2]: a
args[3]: test
args[4]: 100
args[5]: -1
Chapter
Topic Page No.
No.
Overloading Methods 1
2.1
Method Overloading and Type Promotion 4
Objects as Parameters 6
2.2
Returning Objects 7
Inheritance 15
Types of Inheritance 17
2.4
2.4.1: Protected Member 22
Abstract Classes 33
2.8
Abstract Methods 34
2.9 final with Inheritance 37
Packages 41
2.10.1: Creating User-Defined Packages 42
2.10
2.10.2: Accessing a Package 43
2.10.3: Packages and Member Access 44
2.11 Interfaces 47
Method Overloading is a feature in Java that allows a class to have more than one
methods having same name, but with different signatures (Each method must have
different number of parameters or parameters having different types and orders).
Advantage:
Method Overloading increases the readability of the program.
Provides the flexibility to use similar method with different parameters.
In order to overload a method, the argument lists of the methods must differ in either of
these:
return min;
}
public static double minFunction(int n1, double n2)
{
double min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
}
Minimum(11,6,3) = 3
Minimum(7.3,9.4) = 7.3
Minimum(11,7.3) = 7.3
Note:-
Method overloading is not possible by changing the return type of the method
because of ambiguity that may arise while calling the method with same
parameter list with different return type.
Example:
class Add
{
static int sum(int a, int b)
{
return a+b;
}
static float sum(int a, int b)
{
return a+b;
}
public static void main(String arg[])
{
System.out.println(sum(10,20));
System.out.println(sum(15,25));
}
}
Output:
Compile by: javac TestOverloading3.java
class Overloading
{
void sum(int a, float b)
{
System.out.println(a+b);
}
void sum(int a, int b, int c)
{
System.out.println(a+b+c);
}
OUTPUT:
40.0
165.0
60
7
Returning Objects:
In Java, a method can return any type of data. Return type may any primitive data type
or class type (i.e. object). As a method takes objects as parameters, it can also return
objects as return value.
Example:
class Add
{
int num1,num2,sum;
Add ob3=calculateSum(ob1,ob2);
System.out.println("Object 1 -> Sum = "+ob1.sum);
OUTPUT:
Definition:
Benefits:
1. Name control
2. Access control
3. Code becomes more readable and maintainable because it locally group related
classes in one place.
1) Nested class can access all the members (data members and methods) of
outer class including private.
2) Nested classes are used to develop more readable and maintainable code.
3) Code Optimization: It requires less code to write.
Type Description
Member Inner Class A class created within class and outside method.
A class created for implementing interface or
Anonymous Inner Class extending class. Its name is decided by the java
compiler.
Local Inner Class A class created within method.
Static Nested Class A static class created within class.
Nested Interface An interface created within class or interface.
A non-static class that is created inside a class but outside a method is called member
inner class.
Syntax:
class Outer
{
//code
class Inner
{
//code
}
}
In this example, we are creating msg() method in member inner class that is accessing
the private data member of outer class.
1. class TestMemberOuter1
2. {
3. private int data=30;
4. class Inner
5. {
6. void msg()
7. {
8. System.out.println("data is "+data);
9. }
10. }
11. public static void main(String args[])
12. {
13. TestMemberOuter1 obj=new TestMemberOuter1();
14. TestMemberOuter1.Inner in=obj.new Inner();
15. in.msg();
16. }
17. }
Output:
data is 30
Output:
nice fruits
1. interface Eatable
2. {
3. void eat();
4. }
5. class TestAnnonymousInner1
6. {
7. public static void main(String args[])
8. {
9. Eatable e=new Eatable()
10. {
11. public void eat(){System.out.println("nice fruits");
12. }
13. };
14. e.eat();
15. }
16. }
Output:
nice fruits
A class i.e. created inside a method is called local inner class in java. If you want to
invoke the methods of local inner class, you must instantiate this class inside the
method.
Output:
30
50
Properties:
1. Completely hidden from the outside world.
2. Cannot access the local variables of the method (in which they are defined), but the
local variables has to be declared final to access.
A static class i.e. created inside a class is called static nested class in java. It cannot
access non-static data members and methods. It can be accessed by outer class name.
o It can access static data members of outer class including private.
o Static nested class cannot access non-static (instance) data member or method.
1. class TestOuter1
2. {
3. static int data=30;
4. static class Inner
5. {
6. void msg()
7. {
8. System.out.println("data is "+data);
9. }
10. }
11. public static void main(String args[])
12. {
13. TestOuter1.Inner obj=new TestOuter1.Inner();
14. obj.msg();
15. }
16. }
Output:
data is 30
If you have the static member inside static nested class, you don't need to create
instance of static nested class.
1. class TestOuter2{
2. static int data=30;
3. static class Inner
4. {
5. static void msg()
6. {
7. System.out.println("data is "+data);
8. }
9. }
10. public static void main(String args[])
11. {
12. TestOuter2.Inner.msg();//no need to create the instance of static nested
class
13. }
14. }
Output:
data is 30
2.4: Inheritance
Definition:
Inheritance is a process of deriving a new class from existing class, also called as
“extending a class”. When an existing class is extended, the new (inherited) class
has all the properties and methods of the existing class and also possesses its own
characteristics.
The class whose property is being inherited by another class is called “base class”
(or) “parent class” (or) “super class”.
The class that inherits a particular property or a set of properties from the base class
is called “derived class” (or) “child class” (or) “sub class”.
Class A
Base class
Properties and
methods
Extended to
Class B
Derived
Properties and methods
of Class A + B’s own
properties and methods
Subclasses of a class can define their own unique behaviors and yet share some of
the same functionality of the parent class.
ADVANTAGES OF INHERITANCE:
Reusability of Code:
Inheritance is mainly used for code reusability (Code reusability means
that we can add extra features to an existing class without modifying it).
Effort and Time Saving:
The advantage of reusability saves the programmer time and effort. Since
the main code written can be reused in various situations as needed.
Increased Reliability:
The program with inheritance becomes more understandable and easily
maintainable as the sub classes are created from the existing reliably
working classes.
“extends” KEYWORD:
Inheriting a class means creating a new class as an extension of another class.
The extends keyword is used to inherit a class from existing class.
The general form of a class declaration that inherits a superclass is shown here:
Syntax:
[access_specifier] class subclass_name extends superclass_name
{
// body of class
}
In the above example, Vehicle is the super class or base class that holds the
common property of Car and Bike. Car and Bike is the sub class or derived class that
inherits the property of class Vehicle extends is the keyword used to inherit a class.
TYPES OF INHERITACE:
1. Single Inheritance
2. Multilevel Inheritance
3. Multiple Inheritance
Note: The following inheritance types are not directly supported in Java.
4. Hierarchical Inheritance
5. Hybrid Inheritance
19
1. SINGLE INHERITANCE
The process of creating only one subclass from only one super class is known as Single
Inheritance.
Only two classes are involved in this inheritance.
The subclass can access all the members of super class.
1. class Animal
2. {
3. void eat()
4. {
5. System.out.println("eating...");
6. }
7. }
8. class Dog extends Animal
9. {
10. void bark()
11. {
12. System.out.println("barking...");
13. }
14.}
15.class TestInheritance
16.{
17. public static void main(String args[])
18. {
19. Dog d=new Dog();
20. d.bark();
21. d.eat();
22. }
23.}
Output:
$java TestInheritance
barking...
eating...
2. MULTILEVEL INHERITANCE:
The process of creating a new sub class from an already inherited sub class is
known as Multilevel Inheritance.
Multiple classes are involved in inheritance, but one class extends only one.
The lowermost subclass can make use of all its super classes' members.
Multilevel inheritance is an indirect way of implementing multiple inheritance.
Example: Animal Dog BabyDog
1. class Animal
2. {
3. void eat()
4. {
5. System.out.println("eating...");
6. }
7. }
8. class Dog extends Animal
9. {
10. void bark()
11. {
12. System.out.println("barking...");
13. }
14. }
15. class BabyDog extends Dog
16. {
17. void weep()
18. {
19. System.out.println("weeping...");
20. }
21. }
22. class TestInheritance2
23. {
24. public static void main(String args[]) {
25. BabyDog d=new BabyDog();
26. d.weep();
27. d.bark();
28. d.eat();
29. }
30. }
Output:
$java TestInheritance2
weeping...
barking...
eating..
3. HIERARCHICAL INHERITANCE
The process of creating more than one sub classes from one super class is called
Hierarchical Inheritance.
Animal
Dog Cat
Example:
1. class Animal
2. {
3. void eat()
4. {
5. System.out.println("eating...");
6. }
7. }
8. class Dog extends Animal
9. {
10. void bark()
11. {
12. System.out.println("barking...");
13. }
14. }
15. class Cat extends Animal
16. {
17. void meow()
18. {
19. System.out.println("meowing...");
20. }
21. }
22. class TestInheritance3
23. {
24. public static void main(String args[])
25. {
26. Cat c=new Cat();
27. c.meow();
28. c.eat();
29. //c.bark();//C.T.Error
30. }
31. }
Output:
meowing...
eating...
The private members of a class cannot be directly accessed outside the class. Only
methods of that class can access the private members directly. However, sometimes it
may be necessary for a subclass to access a private member of a superclass. If you make
a private member public, then anyone can access that member. So, if a member of a
superclass needs to be (directly) accessed in a subclass then you must declare that
member protected.
Following program illustrates how the methods of a subclass can directly access a
protected member of the superclass.
Consider two kinds of shapes: rectangles and triangles. These two shapes have certain
common properties height and a width (or base).
This could be represented in the world of classes with a class Shapes from which we
would derive the two other ones : Rectangle and Triangle
Program : (Shape.java)
Output :
Area of rectangle : 20.0
Area of triangle : 25.0
In Java, constructor of base class with no argument gets automatically called in derived
class constructor.
Example:
class A
{
A()
{ System.out.println(“ Inside A’s Constructor”); }
}
class B extends A
{
B()
After compiler inserts the super constructor, the sub class constructor looks like the
following:
B()
{
super();
System.out.println("Inside B’s Constructor");
}
C()
{
super();
Super is a special keyword that directs the compiler to invoke the superclass
members. It is used to refer to the parent class of the class in which the keyword is
used.
super keyword is used for the following three purposes:
1. To invoke superclass constructor.
2. To invoke superclass members variables.
3. To invoke superclass methods.
Example:
class A // super class
{
int i;
A(String str) //superclass constructor
{
System.out.println(" Welcome to "+str);
}
void show() //superclass method
{
System.out.println(" Thank You!");
}
}
class B extends A
{
int i; // hides the superclass variable 'i'.
B(int a, int b) // subclass constructor
{
super("Java Programming"); // invoking superclass constructor
super.i=a; //accessing superclass member variable
i=b;
}
// Mehtod overriding
@Override
void show()
{
System.out.println(" i in superclass : "+super.i);
System.out.println(" i in subclass : "+i);
super.show(); // invoking superclass method
}
}
public class UseSuper {
public static void main(String[] args) {
B objB=new B(1,2); // subclass object construction
objB.show(); // call to subclass method show()
}
}
Output:
Welcome to Java Programming
i in superclass : 1
i in subclass : 2
Thank You!
Program Explanation:
In the above program, we have created the base class named A that contains a instance
variable ‘i’ and a method show(). Class A contains a parameterized constructor that
receives string as a parameter and prints that string. Class B is a subclass of A which
contains a instance variable ‘i’ ( hides the superclass variable ‘i’) and overrides the
superclass method show(). The subclass defines the constructor with two parameters a
and b. The subclass constructor invokes the superclass constructor super(String) by
passing the string “Java Programming” and assigns the value a to the superclass
variable(super.i=a) and b to the subclass variable. The show() method of subclass
prints the values of ‘i’ form both superclass and subclass & invokes the superclass
method as super.show().
In the main class, object for subclass B is created and the object is used to invoke
show() method of subclass.
When a method in a subclass has the same name and type signature as a method in
its superclass, then the method in subclass is said to override a method in the
superclass.
Example:
class Bank
{
int getRateOfInterest()// super class method
{
return 0;
}
}
class Axis extends Bank// subclass of bank
{
int getRateOfInterest()// overriding the superclass method
{
return 6;
}
}
class ICICI extends Bank// subclass of Bank
{
int getRateOfInterest()// overriding the superclass method
{
return 15;
}
}
// Mainclass
class BankTest
{
public static void main(String[] a)
{
Axis a=new Axis();
ICICI i=new ICICI();
// following method call invokes the overridden method of subclass AXIS
System.out.println(“AXIS: Rate of Interest = “+a.getRateOfInterest());
Output:
class A {
void callme() {
System.out.println(“Inside A’s callme method”);
}
}
class B extends A {
//override callme()
void callme() {
System.out.println(“Inside B’s callme method”);
}}
class C extends A
{
//override callme()
void callme() {
System.out.println(“Inside C’s callme method”);
}
}
class Dispatch
{
public static void main(String args[])
{
A a=new A(); //object of type A
B b=new B(); //object of type B
C c=new C(); //object of type C
A r;// obtain a reference of type A
In Method Overloading,
In Method Overriding, sub
Methods of the same class
class have the same method
shares the same name but each
with same name and exactly
Definition method must have different
the same number and type of
number of parameters or
parameters and same return
parameters having different
type as a super class.
types and order.
Method Overloading means Method Overriding means
more than one method shares method of base class is re-
Meaning
the same name in the class but defined in the derived class
having different signature. having same signature.
Method Overloading is to “add” Method Overriding is to
Behavior or “extend” more to method’s “Change” existing behavior of
behavior. method.
For example sending sms, you just type the text and send the message. You don't
know the internal processing about the message delivery.
Abstraction lets you focus on what the object does instead of how it does it.
Abstract Classes:
Example:
abstract class GraphicObject {
int x, y;
...
void moveTo(int newX, int newY) {
...
}
abstract void draw();
abstract void resize();
}
Abstract Methods:
Write a Java program to create an abstract class named Shape that contains 2
integers and an empty method named PrintArea(). Provide 3 classes named
Rectangle, Triangle and Circle such that each one of the classes extends the
class Shape. Each one of the classes contain only the method PrintArea() that
prints the area of the given shape.
1. Final Variable:
Any variable either member variable or local variable (declared inside method or
block) modified by final keyword is called final variable.
The final variables are equivalent to const qualifier in C++ and #define directive
in C.
Syntax:
Example:
final int MAXMARKS=100;
final int PI=3.14;
There is a final variable speedlimit, we are going to change the value of this
variable, but It can't be changed because final variable once assigned a value can never
be changed.
1. class Bike
2. {
3. final int speedlimit=90;//final variable
4. void run( )
5. {
6. speedlimit=400;
. }
8. public static void main(String args[])
9. {
10. Bike obj=new Bike();
11. obj.run();
12. }
13.}
Output: Compile Time Error
NOTE: Final variables are by default read-only.
2. Final Methods:
Final keyword in java can also be applied to methods.
A java method with final keyword is called final method and it cannot be
overridden in sub-class.
If a method is defined with final keyword, it cannot be overridden in the
subclass and its behaviour should remain constant in sub-classes.
Syntax:
final return_type function_name(parameter_list)
{
// method body
}
1. class Bike
2. {
3. final void run()
4. {
5. System.out.println("running");
6. }
7. }
8. class Honda extends Bike
9. {
10. void run()
11. {
12. System.out.println("running safely with 100kmph");
13. }
14. public static void main(String args[])
15. {
16. Honda honda= new Honda();
17. honda.run();
18. }
19.}
Output:
D:\>javac Honda.java
Honda.java:9: error: run() in Honda cannot override run() in Bike
void run()
^
overridden method is final
1 error
3. Final Classes:
Java class with final modifier is called final class in Java and they cannot
be sub-classed or inherited.
Syntax:
final class class_name
{
// body of the class
}
Several classes in Java are final e.g. String, Integer and other wrapper classes.
D:\>javac Honda.java
Honda.java:4: error: cannot inherit from final Bike class Honda extends Bike
^
1 error
Points to Remember:
2.10: PACKAGES
Definition:
Advantage of Package:
Package is used to categorize the classes and interfaces so that they can be easily
maintained.
Package provides access protection.
Package removes naming collision.
To bundle classes and interface
The classes of one package are isolated from the classes of another package
Provides reusability of code
We can create our own package or extend already available package
43
Java package created by user to categorize their project's classes and interface
are known as user-defined packages.
When creating a package, you should choose a name for the package.
Put a package statement with that name at the top of every source file that
contains the classes and interfaces.
The package statement should be the first line in the source file.
There can be only one package statement in each source file
Syntax:
package package_name.[sub_package_name];
public class classname
{ ……..
……..
}
Example:
package pack;
public class class1 {
public static void greet()
{ System.out.println(“Hello”); }
}
The import keyword is used to make the classes and interface of another package
accessible to the current package.
Syntax:
import package1[.package2][.package3].classname or *;
There are three ways to access the package from outside the package.
1. import package.*;
2. import package.classname;
3. fully qualified name.
Using packagename.*
If you use package.* then all the classes and interfaces of this package will be
accessible but not subpackages.
Using packagename.classname
If you import package.classname then only declared class of this package will be
accessible.
package pack;
public class greeting{
public static void greet()
{ System.out.println(“Hello! Good Morning!”); }
}
package Factorial;
public class FactorialClass
{
Output:
F:\>java ImportClass
Enter a Number:
5
Hello! Good Morning!
Factorial of 5 = 120
Power(5,2) = 25.0
Access level modifiers determine whether other classes can use a particular field or
invoke a particular method.
The following table shows the access to members permitted by each modifier.
Access Levels
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
The following figure shows the four classes in this example and how they are related.
Figure: Classes and Packages of the Example Used to Illustrate Access Levels
47
The following table shows where the members of the Alpha class are visible for each of
the access modifiers that can be applied to them.
Visibility
Modifier Alpha Beta Alphasub Gamma
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
Example:
Z:\MyPack\FirstClass.java
package MyPack;
Z:\MyPack2\SecondClass.java
package MyPack2;
import MyPack.FirstClass;
class SecondClass extends FirstClass {
void method()
{
System.out.println(i); // No Error: Will print "I am public variable".
System.out.println(j); // No Error: Will print “I am protected variable”.
System.out.println(k); // Error: k has private access in FirstClass
System.out.println(r); // Error: r is not public in FirstClass; cannot be accessed
// from outside package
}
Output:
I am public variable
I am protected variable
2.11: INTERFACES
Definition:
An interface is a collection of method definitions (without implementations)
and constant values. It is a blueprint of a class. It has static constants and abstract
methods.
Defining Interfaces:
An interface is defined much like a class. The keyword “interface” is used to
define an interface.
Where,
Access_specifer : either public or none.
Name: name of an interface can be any valid java identifier.
Variables: They are implicitly public, final and static, meaning that they cannot be
changed by the implementing class. They must be initialized with a constant
value.
Methods: They are implicitly public and abstract, meaning that they must be declared
without body and defined only by the implementing class.
As shown in the figure given below, a class extends another class, an interface extends
another interface but a class implements an interface.
Once an interface has been defined, one or more classes can implement that
interface.
A class uses the implements keyword to implement an interface.
The implements keyword appears in the class declaration following the extends
portion of the declaration.
Syntax:
51
Rules:
1. If a class implements an interface, then it must provide implementation for all the
methods defined within that interface.
2. A class can implement more than one interfaces by separating the interface
names with comma(,).
3. A class can extend only one class, but implement many interfaces.
4. An interface can extend another interface, similarly to the way that a class can
extend another class.
5. If a class does not perform all the behaviors of the interface, the class must
declare itself as abstract.
Example:
/* File name : Super.java */
interface Super
{
final int x=10;
void print();
}
/* File name : Sub.java */
class Sub implements Super
{
int y=20;
x=100 //ERROR; cannot change modify the value of final variable
{
Sub SubObj=new Sub();
SubObj.print();
Super SupObj=new Sub(); // interface variable referring to class object
SupObj.print();
}
}
Output:
$java sample
X = 10
Y = 20
X = 10
Y = 20
Member variables:
Can be only public and are by default.
By default are static and always static
By default are final and always final
Methods:
Can be only public and are by default.
Cannot be static
Cannot be Final
Properties of Interfaces:
1. Interfaces are not classes. So the user can never use the new operator to
instantiate an interface.
Example: interface super {}
X=new Super() // ERROR
2. The interface variables can be declared, even though the interface objects
can’t be constructed.
Super x; // OK
3. An interface variable must refer to an object of a class that implements the
interface.
4. The instanceOf() method can be used to check if an object implements an
interface.
5. A class can extend only one class, but implement many interfaces.
6. An interface can extend another interface, similarly to the way that a class
can extend another class.
7. All the methods in the interface are public and abstract.
8. All the variable in the interface are public, static and final.
Extending Interfaces:
An interface can extend another interface, similarly to the way that a class can
extend another class.
The extends keyword is used to extend an interface, and the child interface
inherits the methods of the parent interface.
Syntax:
[accessspecifier] interface InterfaceName extends interface1, interface2,…..
{
Code for interface
}
Rule: When a class implements an interface that inherits another interface it must
provide implementation for all the methods defined within the interface inheritance
chain.
Example:
interface A
{
void method1();
}
/* One interface can extend another interface. B now has two abstract methods */
interface B extends A
{
void method2();
}
Output:
F:\> java MyClass
--Method from Interface: A—
--Method from Interface: B—
--Method of the class: MyClass--
Class Interface
The class is denoted by a keyword class The interface is denoted by a keyword
interface
The class contains data members and The interfaces may contain data members
methods. but the methods are defined in and methods but the methods are not
the class implementation. thus class defined. the interface serves as an outline
contains an executable code for the class
By creating an instance of a class the class you cannot create an instance of an
members can be accessed interface
The class can use various access specifiers The interface makes use of only public
like public, private or protected access specifier
The members of a class can be constant or The members of interfaces are always
final declared as final
1. interface Bank
2. {
3. float rateOfInterest();
4. }
5. class SBI implements Bank
6. {
7. public float rateOfInterest()
8. {
9. return 9.15f;
10. }
11. }
12. class PNB implements Bank
13. {
14. public float rateOfInterest()
15. {
16. return 9.7f;
17. }
18. }
19. class TestInterface2
20. {
21. public static void main(String[] args)
22. {
23. Bank b=new SBI();
24. System.out.println("ROI: "+b.rateOfInterest());
25. }
26. }
Output:
ROI: 9.15