SlideShare a Scribd company logo
1 © 2001-2003 Marty Hall, Larry Brown http://www.corewebprogramming.com
core
programming
Advanced
Object-Oriented
Programming in Java
Advanced Object Oriented Programming2 www.corewebprogramming.com
Agenda
• Overloading
• Designing “real” classes
• Inheritance
• Advanced topics
– Abstract classes
– Interfaces
– Understanding polymorphism
– Setting a CLASSPATH and using packages
– Visibility modifiers
– Creating on-line documentation using JavaDoc
Advanced Object Oriented Programming3 www.corewebprogramming.com
Example 4: Overloading
class Ship4 {
public double x=0.0, y=0.0, speed=1.0, direction=0.0;
public String name;
public Ship4(double x, double y,
double speed, double direction,
String name) {
this.x = x;
this.y = y;
this.speed = speed;
this.direction = direction;
this.name = name;
}
public Ship4(String name) {
this.name = name;
}
private double degreesToRadians(double degrees) {
return(degrees * Math.PI / 180.0);
}
...
Advanced Object Oriented Programming4 www.corewebprogramming.com
Overloading (Continued)
...
public void move() {
move(1);
}
public void move(int steps) {
double angle = degreesToRadians(direction);
x = x + (double)steps * speed * Math.cos(angle);
y = y + (double)steps * speed * Math.sin(angle);
}
public void printLocation() {
System.out.println(name + " is at ("
+ x + "," + y + ").");
}
}
Advanced Object Oriented Programming5 www.corewebprogramming.com
Overloading: Testing and
Results
public class Test4 {
public static void main(String[] args) {
Ship4 s1 = new Ship4("Ship1");
Ship4 s2 = new Ship4(0.0, 0.0, 2.0, 135.0, "Ship2");
s1.move();
s2.move(3);
s1.printLocation();
s2.printLocation();
}
}
• Compiling and Running:
javac Test4.java
java Test4
• Output:
Ship1 is at (1,0).
Ship2 is at (-4.24264,4.24264).
Advanced Object Oriented Programming6 www.corewebprogramming.com
Overloading: Major Points
• Idea
– Allows you to define more than one function or
constructor with the same name
• Overloaded functions or constructors must differ in
the number or types of their arguments (or both), so
that Java can always tell which one you mean
• Simple examples:
– Here are two square methods that differ only in the
type of the argument; they would both be permitted inside
the same class definition.
// square(4) is 16
public int square(int x) { return(x*x); }
// square("four") is "four four"
public String square(String s) {
return(s + " " + s);
}
Advanced Object Oriented Programming7 www.corewebprogramming.com
Example 5: OOP Design and
Usage
/** Ship example to demonstrate OOP in Java. */
public class Ship {
private double x=0.0, y=0.0, speed=1.0, direction=0.0;
private String name;
…
/** Get current X location. */
public double getX() {
return(x);
}
/** Set current X location. */
public void setX(double x) {
this.x = x;
}
Advanced Object Oriented Programming8 www.corewebprogramming.com
Example 5: Major Points
• Encapsulation
– Lets you change internal representation and data
structures without users of your class changing their code
– Lets you put constraints on values without users of your
class changing their code
– Lets you perform arbitrary side effects without users of
your class changing their code
• Comments and JavaDoc
– See later slides (or book) for details
Advanced Object Oriented Programming9 www.corewebprogramming.com
Example 6: Inheritance
public class Speedboat extends Ship {
private String color = "red";
public Speedboat(String name) {
super(name);
setSpeed(20);
}
public Speedboat(double x, double y,
double speed, double direction,
String name, String color) {
super(x, y, speed, direction, name);
setColor(color);
}
public void printLocation() {
System.out.print(getColor().toUpperCase() + " ");
super.printLocation();
}
...
}
Advanced Object Oriented Programming10 www.corewebprogramming.com
Inheritance Example: Testing
public class SpeedboatTest {
public static void main(String[] args) {
Speedboat s1 = new Speedboat("Speedboat1");
Speedboat s2 = new Speedboat(0.0, 0.0, 2.0, 135.0,
"Speedboat2", "blue");
Ship s3 = new Ship(0.0, 0.0, 2.0, 135.0, "Ship1");
s1.move();
s2.move();
s3.move();
s1.printLocation();
s2.printLocation();
s3.printLocation();
}
}
Advanced Object Oriented Programming11 www.corewebprogramming.com
Inheritance Example: Result
• Compiling and Running:
javac SpeedboatTest.java
– The above calls javac on Speedboat.java and
Ship.java automatically
java SpeedboatTest
• Output
RED Speedboat1 is at (20,0).
BLUE Speedboat2 is at (-1.41421,1.41421).
Ship1 is at (-1.41421,1.41421).
Advanced Object Oriented Programming12 www.corewebprogramming.com
Example 6: Major Points
• Format for defining subclasses
• Using inherited methods
• Using super(…) for inherited constructors
– Only when the zero-arg constructor is not OK
• Using super.someMethod(…) for inherited
methods
– Only when there is a name conflict
Advanced Object Oriented Programming13 www.corewebprogramming.com
Inheritance
• Syntax for defining subclasses
public class NewClass extends OldClass {
...
}
• Nomenclature:
– The existing class is called the superclass, base class or parent class
– The new class is called the subclass, derived class or child class
• Effect of inheritance
– Subclasses automatically have all public fields and methods of the
parent class
– You don’t need any special syntax to access the inherited fields and
methods; you use the exact same syntax as with locally defined
fields or methods.
– You can also add in fields or methods not available in the superclass
• Java doesn’t support multiple inheritance
Advanced Object Oriented Programming14 www.corewebprogramming.com
Inherited constructors and
super(...)
• When you instantiate an object of a subclass, the
system will automatically call the superclass
constructor first
– By default, the zero-argument superclass constructor is called
unless a different constructor is specified
– Access the constructor in the superclass through
super(args)
– If super(…) is used in a subclass constructor, then super(…)
must be the first statement in the constructor
• Constructor life-cycle
– Each constructor has three phases:
1. Invoke the constructor of the superclass
2. Initialize all instance variables based on their initialization
statements
3. Execute the body of the constructor
Advanced Object Oriented Programming15 www.corewebprogramming.com
Overridden methods and
super.method(...)
• When a class defines a method using the same name,
return type, and arguments as a method in the
superclass, then the class overrides the method in the
superclass
– Only non-static methods can be overridden
• If there is a locally defined method and an inherited
method that have the same name and take the same
arguments, you can use the following to refer to the
inherited method
super.methodName(...)
– Successive use of super (super.super.methodName) will not
access overridden methods higher up in the hierarchy; super can
only be used to invoke overridden methods from within the class
that does the overriding
Advanced Object Oriented Programming16 www.corewebprogramming.com
Advanced OOP Topics
• Abstract classes
• Interfaces
• Polymorphism details
• CLASSPATH
• Packages
• Visibility other than public or private
• JavaDoc details
Advanced Object Oriented Programming17 www.corewebprogramming.com
Abstract Classes
• Idea
– Abstract classes permit declaration of classes that define only part of
an implementation, leaving the subclasses to provide the details
• A class is considered abstract if at least one
method in the class has no implementation
– An abstract method has no implementation (known in C++ as a pure
virtual function)
– Any class with an abstract method must be declared abstract
– If the subclass overrides all the abstract methods in the superclass,
than an object of the subclass can be instantiated
• An abstract class can contain instance variables
and methods that are fully implemented
– Any subclass can override a concrete method inherited from the
superclass and declare the method abstract
Advanced Object Oriented Programming18 www.corewebprogramming.com
Abstract Classes (Continued)
• An abstract class cannot be instantiated,
however references to an abstract class can
be declared
public abstract ThreeDShape {
public abstract void drawShape(Graphics g);
public abstract void resize(double scale);
}
ThreeDShape s1;
ThreeDShape[] arrayOfShapes
= new ThreeDShape[20];
• Classes from which objects can be
instantiated are called concrete classes
Advanced Object Oriented Programming19 www.corewebprogramming.com
Interfaces
• Idea
– Interfaces define a Java type consisting purely of
constants and abstract methods
– An interface does not implement any of the methods, but
imposes a design structure on any class that uses the
interface
– A class that implements an interface must either provide
definitions for all methods or declare itself abstract
Advanced Object Oriented Programming20 www.corewebprogramming.com
Interfaces (Continued)
• Modifiers
– All methods in an interface are implicitly abstract and the
keyword abstract is not required in a method declaration
– Data fields in an interface are implicitly static
final (constants)
– All data fields and methods in an interface are implicitly
public
public interface Interface1 {
DataType CONSTANT1 = value1;
DataType CONSTANT2 = value2;
ReturnType1 method1(ArgType1 arg);
ReturnType2 method2(ArgType2 arg);
}
Advanced Object Oriented Programming21 www.corewebprogramming.com
Interfaces (Continued)
• Extending Interfaces
– Interfaces can extend other interfaces, which brings rise to sub-
interfaces and super-interfaces
– Unlike classes, however, an interface can extend more than one
interface at a time
public interface Displayable extends Drawable, Printable {
// Additonal constants and abstract methods
...
}
• Implementing Multiple Interfaces
– Interfaces provide a form of multiple inheritance because a class can
implement more than one interface at a time
public class Circle extends TwoDShape
implements Drawable, Printable {
...
}
Advanced Object Oriented Programming22 www.corewebprogramming.com
Polymorphism
• “Polymorphic” literally means “of multiple shapes”
and in the context of object-oriented programming,
polymorphic means “having multiple behavior”
• A polymorphic method results in different actions
depending on the object being referenced
– Also known as late binding or run-time binding
• In practice, polymorphism is used in conjunction
with reference arrays to loop through a collection
of objects and to access each object's
polymorphic method
Advanced Object Oriented Programming23 www.corewebprogramming.com
Polymorphism: Example
public class PolymorphismTest {
public static void main(String[] args) {
Ship[] ships = new Ship[3];
ships[0] = new Ship(0.0, 0.0, 2.0, 135.0, "Ship1");
ships[1] = new Speedboat("Speedboat1");
ships[2] = new Speedboat(0.0, 0.0, 2.0, 135.0,
"Speedboat2", "blue");
for(int i=0; i<ships.length ; i++) {
ships[i].move();
ships[i].printLocation();
}
}
}
Advanced Object Oriented Programming24 www.corewebprogramming.com
Polymorphism: Result
• Compiling and Running:
javac PolymorphismTest.java
java PolymorphismTest
• Output
RED Speedboat1 is at (20,0).
BLUE Speedboat2 is at (-1.41421,1.41421).
Ship1 is at (-1.41421,1.41421).
Advanced Object Oriented Programming25 www.corewebprogramming.com
CLASSPATH
• The CLASSPATH environment variable
defines a list of directories in which to look
for classes
– Default = current directory and system libraries
– Best practice is to not set this when first learning Java!
• Setting the CLASSPATH
set CLASSPATH = .;C:java;D:cwpechoserver.jar
setenv CLASSPATH .:~/java:/home/cwp/classes/
– The period indicates the current working directory
• Supplying a CLASSPATH
javac –classpath .;D:cwp WebClient.java
java –classpath .;D:cwp WebClient
Advanced Object Oriented Programming26 www.corewebprogramming.com
Creating Packages
• A package lets you group classes in
subdirectories to avoid accidental name conflicts
– To create a package:
1. Create a subdirectory with the same name as the desired
package and place the source files in that directory
2. Add a package statement to each file
package packagename;
3. Files in the main directory that want to use the package should
include
import packagename.*;
• The package statement must be the first
statement in the file
• If a package statement is omitted from a file, then
the code is part of the default package that has
no name
Advanced Object Oriented Programming27 www.corewebprogramming.com
Package Directories
• The package hierarchy reflects the file
system directory structure
– The root of any package must be accessible through a
Java system default directory or through the CLASSPATH
environment variable
Package java.math
Advanced Object Oriented Programming28 www.corewebprogramming.com
Visibility Modifiers
• public
– This modifier indicates that the variable or method can be
accessed anywhere an instance of the class is accessible
– A class may also be designated public, which means
that any other class can use the class definition
– The name of a public class must match the filename, thus
a file can have only one public class
• private
– A private variable or method is only accessible from
methods within the same class
– Declaring a class variable private "hides" the data within
the class, making the data available outside the class only
through method calls
Advanced Object Oriented Programming29 www.corewebprogramming.com
Visibility Modifiers, cont.
• protected
– Protected variables or methods can only be accessed by
methods within the class, within classes in the same
package, and within subclasses
– Protected variables or methods are inherited by
subclasses of the same or different package
• [default]
– A variable or method has default visibility if a modifier is
omitted
– Default visibility indicates that the variable or method can
be accessed by methods within the class, and within
classes in the same package
– Default variables are inherited only by subclasses in the
same package
Advanced Object Oriented Programming30 www.corewebprogramming.com
Protected Visibility: Example
• Cake, ChocolateCake, and Pie inherit a calories field
• However, if the code in the Cake class had a reference to object of
type Pie, the protected calories field of the Pie object could not
be accessed in the Cake class
– Protected fields of a class are not accessible outside its branch of the class hierarchy
(unless the complete tree hierarchy is in the same package)
Advanced Object Oriented Programming31 www.corewebprogramming.com
Default Visibility: Example
• Even through inheritance, the fat data field cannot cross the
package boundary
– Thus, the fat data field is accessible through any Dessert, Pie, and Cake
object within any code in the Dessert package
– However, the ChocolateCake class does not have a fat data field, nor can the fat
data field of a Dessert, Cake, or Pie object be accessed from code in the
ChocolateCake class
Advanced Object Oriented Programming32 www.corewebprogramming.com
Visibility Summary
Modifiers
Data Fields and Methods public protected default private
Accessible from same class? yes yes yes yes
Accessible to classes (nonsubclass) yes yes yes no
from the same package?
Accessible to subclass from the yes yes yes no
same package?
Accessible to classes (nonsubclass) yes no no no
from different package?
Accessible to subclasses from yes no no no
different package?
Inherited by subclass in the yes yes yes no
same package?
Inherited by subclass in different yes yes no no
package?
Advanced Object Oriented Programming33 www.corewebprogramming.com
Other Modifiers
• final
– For a class, indicates that it cannot be subclassed
– For a method or variable, cannot be changed at runtime or
overridden in subclasses
• synchronized
– Sets a lock on a section of code or method
– Only one thread can access the same synchronized code
at any given time
• transient
– Variables are not stored in serialized objects sent over the
network or stored to disk
• native
– Indicates that the method is implement using C or C++
Advanced Object Oriented Programming34 www.corewebprogramming.com
Comments and JavaDoc
• Java supports 3 types of comments
– // Comment to end of line.
– /* Block comment containing multiple lines.
Nesting of comments in not permitted. */
– /** A JavaDoc comment placed before class
definition and nonprivate methods.
Text may contain (most) HTML tags,
hyperlinks, and JavaDoc tags. */
• JavaDoc
– Used to generate on-line documentation
javadoc Foo.java Bar.java
– JavaDoc 1.4 Home Page
• http://java.sun.com/j2se/1.4/docs/tooldocs/javadoc/
Advanced Object Oriented Programming35 www.corewebprogramming.com
Useful JavaDoc Tags
• @author
– Specifies the author of the document
– Must use javadoc –author ... to generate in output
/** Description of some class ...
*
* @author <A HREF="mailto:brown@lmbrown.com">
* Larry Brown</A>
*/
• @version
– Version number of the document
– Must use javadoc –version ... to generate in output
• @param
– Documents a method argument
• @return
– Documents the return type of a method
Advanced Object Oriented Programming36 www.corewebprogramming.com
Useful JavaDoc Command-line
Arguments
• -author
– Includes author information (omitted by default)
• -version
– Includes version number (omitted by default)
• -noindex
– Tells javadoc not to generate a complete index
• -notree
– Tells javadoc not to generate the tree.html class hierarchy
• -link, -linkoffline
– Tells javadoc where to look to resolve links to other packages
-link http://java.sun.com/j2se/1.3/docs/api
-linkoffline http://java.sun.com/j2se/1.3/docs/api
c:jdk1.3docsapi
Advanced Object Oriented Programming37 www.corewebprogramming.com
JavaDoc, Example
/** Ship example to demonstrate OOP in Java.
*
* @author <A HREF="mailto:brown@corewebprogramming.com">
* Larry Brown</A>
* @version 2.0
*/
public class Ship {
private double x=0.0, y=0.0, speed=1.0, direction=0.0;
private String name;
/** Build a ship with specified parameters. */
public Ship(double x, double y, double speed,
double direction, String name) {
setX(x);
setY(y);
setSpeed(speed);
setDirection(direction);
setName(name);
}
...
Advanced Object Oriented Programming38 www.corewebprogramming.com
JavaDoc, Example
> javadoc -linkoffline http://java.sun.com/j2se/1.3/docs/api
c:jdk1.3docsapi
-author -version -noindex -notree Ship.java
Advanced Object Oriented Programming39 www.corewebprogramming.com
JavaDoc: Result
Advanced Object Oriented Programming40 www.corewebprogramming.com
Summary
• Overloaded methods/constructors, except
for the argument list, have identical
signatures
• Use extends to create a new class that
inherits from a superclass
– Java does not support multiple inheritance
• An inherited method in a subclass can be
overridden to provide custom behavior
– The original method in the parent class is accessible
through super.methodName(...)
• Interfaces contain only abstract methods
and constants
– A class can implement more than one interface
Advanced Object Oriented Programming41 www.corewebprogramming.com
Summary (Continued)
• With polymorphism, binding of a method to
a n object is determined at run-time
• The CLASSPATH defines in which directories
to look for classes
• Packages help avoid namespace collisions
– The package statement must be first statement in the
source file before any other statements
• The four visibility types are: public, private,
protected, and default (no modifier)
– Protected members can only cross package boundaries
through inheritance
– Default members are only inherited by classes in the
same package
42 © 2001-2003 Marty Hall, Larry Brown http://www.corewebprogramming.com
core
programming
Questions?

More Related Content

What's hot (19)

PPTX
Java chapter 4
Abdii Rashid
 
PDF
Access modifiers
Kasun Ranga Wijeweera
 
PPT
02 java basics
bsnl007
 
PPT
Java Basics
Rajkattamuri
 
PDF
Java oop
bchinnaiyan
 
PPTX
Session 02 - Elements of Java Language
PawanMM
 
PPT
Java basic
Sonam Sharma
 
PDF
Java OO Revisited
Jussi Pohjolainen
 
DOCX
Core java notes with examples
bindur87
 
PPT
C++ Programming Course
Dennis Chang
 
PPSX
Inner Classes
Hitesh-Java
 
PPTX
Object Oriented Programming with C#
foreverredpb
 
PDF
Java reflection
Ranjith Chaz
 
PPSX
Support for Object-Oriented Programming (OOP) in C++
Ameen Sha'arawi
 
PPTX
Access modifiers in java
Madishetty Prathibha
 
PPSX
Intro to Object Oriented Programming with Java
Hitesh-Java
 
PPT
Java Programming - Polymorphism
Oum Saokosal
 
DOCX
JAVA Notes - All major concepts covered with examples
Sunil Kumar Gunasekaran
 
Java chapter 4
Abdii Rashid
 
Access modifiers
Kasun Ranga Wijeweera
 
02 java basics
bsnl007
 
Java Basics
Rajkattamuri
 
Java oop
bchinnaiyan
 
Session 02 - Elements of Java Language
PawanMM
 
Java basic
Sonam Sharma
 
Java OO Revisited
Jussi Pohjolainen
 
Core java notes with examples
bindur87
 
C++ Programming Course
Dennis Chang
 
Inner Classes
Hitesh-Java
 
Object Oriented Programming with C#
foreverredpb
 
Java reflection
Ranjith Chaz
 
Support for Object-Oriented Programming (OOP) in C++
Ameen Sha'arawi
 
Access modifiers in java
Madishetty Prathibha
 
Intro to Object Oriented Programming with Java
Hitesh-Java
 
Java Programming - Polymorphism
Oum Saokosal
 
JAVA Notes - All major concepts covered with examples
Sunil Kumar Gunasekaran
 

Viewers also liked (19)

PPTX
Net framework і c# lesson1
Andrii Hladkyi
 
PPT
Fundamentals of computer system and Programming EC-105
NUST Stuff
 
PPTX
Design pattern module 1
Andrii Hladkyi
 
PPT
Object oriented programming systems
rchakra
 
PDF
Cloud Computing in Systems Programming Curriculum
Steven Miller
 
PPTX
System programing module 3
Andrii Hladkyi
 
PPT
Advanced OOP - Laws, Principles, Idioms
Clint Edmonson
 
PDF
Simple Solutions for Complex Problems
Tyler Treat
 
PPTX
System Administration DCU
Khalid Rehan
 
PPTX
Advance oops concepts
Sangharsh agarwal
 
PPSX
C# OOP Advanced Concepts
agni_agbc
 
PPT
Synchronization in distributed systems
SHATHAN
 
PDF
From Mainframe to Microservice: An Introduction to Distributed Systems
Tyler Treat
 
PDF
Introduction to systems programming
Mukesh Tekwani
 
PDF
Distributed Systems: scalability and high availability
Renato Lucindo
 
PDF
Rust: Unlocking Systems Programming
C4Media
 
PPTX
introduction to system administration
gamme123
 
PPT
Distributed Systems
Rupsee
 
Net framework і c# lesson1
Andrii Hladkyi
 
Fundamentals of computer system and Programming EC-105
NUST Stuff
 
Design pattern module 1
Andrii Hladkyi
 
Object oriented programming systems
rchakra
 
Cloud Computing in Systems Programming Curriculum
Steven Miller
 
System programing module 3
Andrii Hladkyi
 
Advanced OOP - Laws, Principles, Idioms
Clint Edmonson
 
Simple Solutions for Complex Problems
Tyler Treat
 
System Administration DCU
Khalid Rehan
 
Advance oops concepts
Sangharsh agarwal
 
C# OOP Advanced Concepts
agni_agbc
 
Synchronization in distributed systems
SHATHAN
 
From Mainframe to Microservice: An Introduction to Distributed Systems
Tyler Treat
 
Introduction to systems programming
Mukesh Tekwani
 
Distributed Systems: scalability and high availability
Renato Lucindo
 
Rust: Unlocking Systems Programming
C4Media
 
introduction to system administration
gamme123
 
Distributed Systems
Rupsee
 
Ad

Similar to 3java Advanced Oop (20)

PPT
Object and class
mohit tripathi
 
PDF
Oop concepts classes_objects
William Olivier
 
DOCX
Java oop concepts
Syeful Islam
 
PDF
Unit 2
Amar Jukuntla
 
PDF
JAVA-PPT'S.pdf
AnmolVerma363503
 
PPTX
Java session2
Rajeev Kumar
 
PDF
Core java complete notes - PAID call at +91-814-614-5674
WebKrit Infocom
 
PPTX
ITT 202 PRINCIPLES OF OBJECT ORIENTED TECHNIQUE
VinishA23
 
PPT
Chapter 8 Inheritance
OUM SAOKOSAL
 
PPTX
UNIT I OOP AND JAVA FUNDAMENTALS CONSTRUCTOR
mohanrajm63
 
PDF
Introduction to Object Oriented Programming &amp; Design Principles
Michael Redlich
 
PDF
Introduction to Object Oriented Programming & Design Principles
Michael Redlich
 
PPTX
JAVA-PPT'S-complete-chrome.pptx
KunalYadav65140
 
PPTX
JAVA-PPT'S.pptx
RaazIndia
 
PPT
Chap11
Terry Yoast
 
PPTX
Object oriented programming
Jun Shimizu
 
PPTX
SKILLWISE - OOPS CONCEPT
Skillwise Group
 
PDF
Java 06
Loida Igama
 
PDF
Top 30 Technical interview questions
SohailSaifi15
 
PPTX
Java presentation
Akteruzzaman .
 
Object and class
mohit tripathi
 
Oop concepts classes_objects
William Olivier
 
Java oop concepts
Syeful Islam
 
JAVA-PPT'S.pdf
AnmolVerma363503
 
Java session2
Rajeev Kumar
 
Core java complete notes - PAID call at +91-814-614-5674
WebKrit Infocom
 
ITT 202 PRINCIPLES OF OBJECT ORIENTED TECHNIQUE
VinishA23
 
Chapter 8 Inheritance
OUM SAOKOSAL
 
UNIT I OOP AND JAVA FUNDAMENTALS CONSTRUCTOR
mohanrajm63
 
Introduction to Object Oriented Programming &amp; Design Principles
Michael Redlich
 
Introduction to Object Oriented Programming & Design Principles
Michael Redlich
 
JAVA-PPT'S-complete-chrome.pptx
KunalYadav65140
 
JAVA-PPT'S.pptx
RaazIndia
 
Chap11
Terry Yoast
 
Object oriented programming
Jun Shimizu
 
SKILLWISE - OOPS CONCEPT
Skillwise Group
 
Java 06
Loida Igama
 
Top 30 Technical interview questions
SohailSaifi15
 
Java presentation
Akteruzzaman .
 
Ad

More from Adil Jafri (20)

PDF
Csajsp Chapter5
Adil Jafri
 
PDF
Php How To
Adil Jafri
 
PDF
Php How To
Adil Jafri
 
PDF
Owl Clock
Adil Jafri
 
PDF
Phpcodebook
Adil Jafri
 
PDF
Phpcodebook
Adil Jafri
 
PDF
Programming Asp Net Bible
Adil Jafri
 
PDF
Tcpip Intro
Adil Jafri
 
PDF
Network Programming Clients
Adil Jafri
 
PDF
Jsp Tutorial
Adil Jafri
 
PPT
Ta Javaserverside Eran Toch
Adil Jafri
 
PDF
Csajsp Chapter10
Adil Jafri
 
PDF
Javascript
Adil Jafri
 
PDF
Flashmx Tutorials
Adil Jafri
 
PDF
Java For The Web With Servlets%2cjsp%2cand Ejb
Adil Jafri
 
PDF
Html Css
Adil Jafri
 
PDF
Digwc
Adil Jafri
 
PDF
Csajsp Chapter12
Adil Jafri
 
PDF
Html Frames
Adil Jafri
 
PDF
Flash Tutorial
Adil Jafri
 
Csajsp Chapter5
Adil Jafri
 
Php How To
Adil Jafri
 
Php How To
Adil Jafri
 
Owl Clock
Adil Jafri
 
Phpcodebook
Adil Jafri
 
Phpcodebook
Adil Jafri
 
Programming Asp Net Bible
Adil Jafri
 
Tcpip Intro
Adil Jafri
 
Network Programming Clients
Adil Jafri
 
Jsp Tutorial
Adil Jafri
 
Ta Javaserverside Eran Toch
Adil Jafri
 
Csajsp Chapter10
Adil Jafri
 
Javascript
Adil Jafri
 
Flashmx Tutorials
Adil Jafri
 
Java For The Web With Servlets%2cjsp%2cand Ejb
Adil Jafri
 
Html Css
Adil Jafri
 
Digwc
Adil Jafri
 
Csajsp Chapter12
Adil Jafri
 
Html Frames
Adil Jafri
 
Flash Tutorial
Adil Jafri
 

Recently uploaded (20)

PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Digital Circuits, important subject in CS
contactparinay1
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 

3java Advanced Oop

  • 1. 1 © 2001-2003 Marty Hall, Larry Brown http://www.corewebprogramming.com core programming Advanced Object-Oriented Programming in Java
  • 2. Advanced Object Oriented Programming2 www.corewebprogramming.com Agenda • Overloading • Designing “real” classes • Inheritance • Advanced topics – Abstract classes – Interfaces – Understanding polymorphism – Setting a CLASSPATH and using packages – Visibility modifiers – Creating on-line documentation using JavaDoc
  • 3. Advanced Object Oriented Programming3 www.corewebprogramming.com Example 4: Overloading class Ship4 { public double x=0.0, y=0.0, speed=1.0, direction=0.0; public String name; public Ship4(double x, double y, double speed, double direction, String name) { this.x = x; this.y = y; this.speed = speed; this.direction = direction; this.name = name; } public Ship4(String name) { this.name = name; } private double degreesToRadians(double degrees) { return(degrees * Math.PI / 180.0); } ...
  • 4. Advanced Object Oriented Programming4 www.corewebprogramming.com Overloading (Continued) ... public void move() { move(1); } public void move(int steps) { double angle = degreesToRadians(direction); x = x + (double)steps * speed * Math.cos(angle); y = y + (double)steps * speed * Math.sin(angle); } public void printLocation() { System.out.println(name + " is at (" + x + "," + y + ")."); } }
  • 5. Advanced Object Oriented Programming5 www.corewebprogramming.com Overloading: Testing and Results public class Test4 { public static void main(String[] args) { Ship4 s1 = new Ship4("Ship1"); Ship4 s2 = new Ship4(0.0, 0.0, 2.0, 135.0, "Ship2"); s1.move(); s2.move(3); s1.printLocation(); s2.printLocation(); } } • Compiling and Running: javac Test4.java java Test4 • Output: Ship1 is at (1,0). Ship2 is at (-4.24264,4.24264).
  • 6. Advanced Object Oriented Programming6 www.corewebprogramming.com Overloading: Major Points • Idea – Allows you to define more than one function or constructor with the same name • Overloaded functions or constructors must differ in the number or types of their arguments (or both), so that Java can always tell which one you mean • Simple examples: – Here are two square methods that differ only in the type of the argument; they would both be permitted inside the same class definition. // square(4) is 16 public int square(int x) { return(x*x); } // square("four") is "four four" public String square(String s) { return(s + " " + s); }
  • 7. Advanced Object Oriented Programming7 www.corewebprogramming.com Example 5: OOP Design and Usage /** Ship example to demonstrate OOP in Java. */ public class Ship { private double x=0.0, y=0.0, speed=1.0, direction=0.0; private String name; … /** Get current X location. */ public double getX() { return(x); } /** Set current X location. */ public void setX(double x) { this.x = x; }
  • 8. Advanced Object Oriented Programming8 www.corewebprogramming.com Example 5: Major Points • Encapsulation – Lets you change internal representation and data structures without users of your class changing their code – Lets you put constraints on values without users of your class changing their code – Lets you perform arbitrary side effects without users of your class changing their code • Comments and JavaDoc – See later slides (or book) for details
  • 9. Advanced Object Oriented Programming9 www.corewebprogramming.com Example 6: Inheritance public class Speedboat extends Ship { private String color = "red"; public Speedboat(String name) { super(name); setSpeed(20); } public Speedboat(double x, double y, double speed, double direction, String name, String color) { super(x, y, speed, direction, name); setColor(color); } public void printLocation() { System.out.print(getColor().toUpperCase() + " "); super.printLocation(); } ... }
  • 10. Advanced Object Oriented Programming10 www.corewebprogramming.com Inheritance Example: Testing public class SpeedboatTest { public static void main(String[] args) { Speedboat s1 = new Speedboat("Speedboat1"); Speedboat s2 = new Speedboat(0.0, 0.0, 2.0, 135.0, "Speedboat2", "blue"); Ship s3 = new Ship(0.0, 0.0, 2.0, 135.0, "Ship1"); s1.move(); s2.move(); s3.move(); s1.printLocation(); s2.printLocation(); s3.printLocation(); } }
  • 11. Advanced Object Oriented Programming11 www.corewebprogramming.com Inheritance Example: Result • Compiling and Running: javac SpeedboatTest.java – The above calls javac on Speedboat.java and Ship.java automatically java SpeedboatTest • Output RED Speedboat1 is at (20,0). BLUE Speedboat2 is at (-1.41421,1.41421). Ship1 is at (-1.41421,1.41421).
  • 12. Advanced Object Oriented Programming12 www.corewebprogramming.com Example 6: Major Points • Format for defining subclasses • Using inherited methods • Using super(…) for inherited constructors – Only when the zero-arg constructor is not OK • Using super.someMethod(…) for inherited methods – Only when there is a name conflict
  • 13. Advanced Object Oriented Programming13 www.corewebprogramming.com Inheritance • Syntax for defining subclasses public class NewClass extends OldClass { ... } • Nomenclature: – The existing class is called the superclass, base class or parent class – The new class is called the subclass, derived class or child class • Effect of inheritance – Subclasses automatically have all public fields and methods of the parent class – You don’t need any special syntax to access the inherited fields and methods; you use the exact same syntax as with locally defined fields or methods. – You can also add in fields or methods not available in the superclass • Java doesn’t support multiple inheritance
  • 14. Advanced Object Oriented Programming14 www.corewebprogramming.com Inherited constructors and super(...) • When you instantiate an object of a subclass, the system will automatically call the superclass constructor first – By default, the zero-argument superclass constructor is called unless a different constructor is specified – Access the constructor in the superclass through super(args) – If super(…) is used in a subclass constructor, then super(…) must be the first statement in the constructor • Constructor life-cycle – Each constructor has three phases: 1. Invoke the constructor of the superclass 2. Initialize all instance variables based on their initialization statements 3. Execute the body of the constructor
  • 15. Advanced Object Oriented Programming15 www.corewebprogramming.com Overridden methods and super.method(...) • When a class defines a method using the same name, return type, and arguments as a method in the superclass, then the class overrides the method in the superclass – Only non-static methods can be overridden • If there is a locally defined method and an inherited method that have the same name and take the same arguments, you can use the following to refer to the inherited method super.methodName(...) – Successive use of super (super.super.methodName) will not access overridden methods higher up in the hierarchy; super can only be used to invoke overridden methods from within the class that does the overriding
  • 16. Advanced Object Oriented Programming16 www.corewebprogramming.com Advanced OOP Topics • Abstract classes • Interfaces • Polymorphism details • CLASSPATH • Packages • Visibility other than public or private • JavaDoc details
  • 17. Advanced Object Oriented Programming17 www.corewebprogramming.com Abstract Classes • Idea – Abstract classes permit declaration of classes that define only part of an implementation, leaving the subclasses to provide the details • A class is considered abstract if at least one method in the class has no implementation – An abstract method has no implementation (known in C++ as a pure virtual function) – Any class with an abstract method must be declared abstract – If the subclass overrides all the abstract methods in the superclass, than an object of the subclass can be instantiated • An abstract class can contain instance variables and methods that are fully implemented – Any subclass can override a concrete method inherited from the superclass and declare the method abstract
  • 18. Advanced Object Oriented Programming18 www.corewebprogramming.com Abstract Classes (Continued) • An abstract class cannot be instantiated, however references to an abstract class can be declared public abstract ThreeDShape { public abstract void drawShape(Graphics g); public abstract void resize(double scale); } ThreeDShape s1; ThreeDShape[] arrayOfShapes = new ThreeDShape[20]; • Classes from which objects can be instantiated are called concrete classes
  • 19. Advanced Object Oriented Programming19 www.corewebprogramming.com Interfaces • Idea – Interfaces define a Java type consisting purely of constants and abstract methods – An interface does not implement any of the methods, but imposes a design structure on any class that uses the interface – A class that implements an interface must either provide definitions for all methods or declare itself abstract
  • 20. Advanced Object Oriented Programming20 www.corewebprogramming.com Interfaces (Continued) • Modifiers – All methods in an interface are implicitly abstract and the keyword abstract is not required in a method declaration – Data fields in an interface are implicitly static final (constants) – All data fields and methods in an interface are implicitly public public interface Interface1 { DataType CONSTANT1 = value1; DataType CONSTANT2 = value2; ReturnType1 method1(ArgType1 arg); ReturnType2 method2(ArgType2 arg); }
  • 21. Advanced Object Oriented Programming21 www.corewebprogramming.com Interfaces (Continued) • Extending Interfaces – Interfaces can extend other interfaces, which brings rise to sub- interfaces and super-interfaces – Unlike classes, however, an interface can extend more than one interface at a time public interface Displayable extends Drawable, Printable { // Additonal constants and abstract methods ... } • Implementing Multiple Interfaces – Interfaces provide a form of multiple inheritance because a class can implement more than one interface at a time public class Circle extends TwoDShape implements Drawable, Printable { ... }
  • 22. Advanced Object Oriented Programming22 www.corewebprogramming.com Polymorphism • “Polymorphic” literally means “of multiple shapes” and in the context of object-oriented programming, polymorphic means “having multiple behavior” • A polymorphic method results in different actions depending on the object being referenced – Also known as late binding or run-time binding • In practice, polymorphism is used in conjunction with reference arrays to loop through a collection of objects and to access each object's polymorphic method
  • 23. Advanced Object Oriented Programming23 www.corewebprogramming.com Polymorphism: Example public class PolymorphismTest { public static void main(String[] args) { Ship[] ships = new Ship[3]; ships[0] = new Ship(0.0, 0.0, 2.0, 135.0, "Ship1"); ships[1] = new Speedboat("Speedboat1"); ships[2] = new Speedboat(0.0, 0.0, 2.0, 135.0, "Speedboat2", "blue"); for(int i=0; i<ships.length ; i++) { ships[i].move(); ships[i].printLocation(); } } }
  • 24. Advanced Object Oriented Programming24 www.corewebprogramming.com Polymorphism: Result • Compiling and Running: javac PolymorphismTest.java java PolymorphismTest • Output RED Speedboat1 is at (20,0). BLUE Speedboat2 is at (-1.41421,1.41421). Ship1 is at (-1.41421,1.41421).
  • 25. Advanced Object Oriented Programming25 www.corewebprogramming.com CLASSPATH • The CLASSPATH environment variable defines a list of directories in which to look for classes – Default = current directory and system libraries – Best practice is to not set this when first learning Java! • Setting the CLASSPATH set CLASSPATH = .;C:java;D:cwpechoserver.jar setenv CLASSPATH .:~/java:/home/cwp/classes/ – The period indicates the current working directory • Supplying a CLASSPATH javac –classpath .;D:cwp WebClient.java java –classpath .;D:cwp WebClient
  • 26. Advanced Object Oriented Programming26 www.corewebprogramming.com Creating Packages • A package lets you group classes in subdirectories to avoid accidental name conflicts – To create a package: 1. Create a subdirectory with the same name as the desired package and place the source files in that directory 2. Add a package statement to each file package packagename; 3. Files in the main directory that want to use the package should include import packagename.*; • The package statement must be the first statement in the file • If a package statement is omitted from a file, then the code is part of the default package that has no name
  • 27. Advanced Object Oriented Programming27 www.corewebprogramming.com Package Directories • The package hierarchy reflects the file system directory structure – The root of any package must be accessible through a Java system default directory or through the CLASSPATH environment variable Package java.math
  • 28. Advanced Object Oriented Programming28 www.corewebprogramming.com Visibility Modifiers • public – This modifier indicates that the variable or method can be accessed anywhere an instance of the class is accessible – A class may also be designated public, which means that any other class can use the class definition – The name of a public class must match the filename, thus a file can have only one public class • private – A private variable or method is only accessible from methods within the same class – Declaring a class variable private "hides" the data within the class, making the data available outside the class only through method calls
  • 29. Advanced Object Oriented Programming29 www.corewebprogramming.com Visibility Modifiers, cont. • protected – Protected variables or methods can only be accessed by methods within the class, within classes in the same package, and within subclasses – Protected variables or methods are inherited by subclasses of the same or different package • [default] – A variable or method has default visibility if a modifier is omitted – Default visibility indicates that the variable or method can be accessed by methods within the class, and within classes in the same package – Default variables are inherited only by subclasses in the same package
  • 30. Advanced Object Oriented Programming30 www.corewebprogramming.com Protected Visibility: Example • Cake, ChocolateCake, and Pie inherit a calories field • However, if the code in the Cake class had a reference to object of type Pie, the protected calories field of the Pie object could not be accessed in the Cake class – Protected fields of a class are not accessible outside its branch of the class hierarchy (unless the complete tree hierarchy is in the same package)
  • 31. Advanced Object Oriented Programming31 www.corewebprogramming.com Default Visibility: Example • Even through inheritance, the fat data field cannot cross the package boundary – Thus, the fat data field is accessible through any Dessert, Pie, and Cake object within any code in the Dessert package – However, the ChocolateCake class does not have a fat data field, nor can the fat data field of a Dessert, Cake, or Pie object be accessed from code in the ChocolateCake class
  • 32. Advanced Object Oriented Programming32 www.corewebprogramming.com Visibility Summary Modifiers Data Fields and Methods public protected default private Accessible from same class? yes yes yes yes Accessible to classes (nonsubclass) yes yes yes no from the same package? Accessible to subclass from the yes yes yes no same package? Accessible to classes (nonsubclass) yes no no no from different package? Accessible to subclasses from yes no no no different package? Inherited by subclass in the yes yes yes no same package? Inherited by subclass in different yes yes no no package?
  • 33. Advanced Object Oriented Programming33 www.corewebprogramming.com Other Modifiers • final – For a class, indicates that it cannot be subclassed – For a method or variable, cannot be changed at runtime or overridden in subclasses • synchronized – Sets a lock on a section of code or method – Only one thread can access the same synchronized code at any given time • transient – Variables are not stored in serialized objects sent over the network or stored to disk • native – Indicates that the method is implement using C or C++
  • 34. Advanced Object Oriented Programming34 www.corewebprogramming.com Comments and JavaDoc • Java supports 3 types of comments – // Comment to end of line. – /* Block comment containing multiple lines. Nesting of comments in not permitted. */ – /** A JavaDoc comment placed before class definition and nonprivate methods. Text may contain (most) HTML tags, hyperlinks, and JavaDoc tags. */ • JavaDoc – Used to generate on-line documentation javadoc Foo.java Bar.java – JavaDoc 1.4 Home Page • http://java.sun.com/j2se/1.4/docs/tooldocs/javadoc/
  • 35. Advanced Object Oriented Programming35 www.corewebprogramming.com Useful JavaDoc Tags • @author – Specifies the author of the document – Must use javadoc –author ... to generate in output /** Description of some class ... * * @author <A HREF="mailto:[email protected]"> * Larry Brown</A> */ • @version – Version number of the document – Must use javadoc –version ... to generate in output • @param – Documents a method argument • @return – Documents the return type of a method
  • 36. Advanced Object Oriented Programming36 www.corewebprogramming.com Useful JavaDoc Command-line Arguments • -author – Includes author information (omitted by default) • -version – Includes version number (omitted by default) • -noindex – Tells javadoc not to generate a complete index • -notree – Tells javadoc not to generate the tree.html class hierarchy • -link, -linkoffline – Tells javadoc where to look to resolve links to other packages -link http://java.sun.com/j2se/1.3/docs/api -linkoffline http://java.sun.com/j2se/1.3/docs/api c:jdk1.3docsapi
  • 37. Advanced Object Oriented Programming37 www.corewebprogramming.com JavaDoc, Example /** Ship example to demonstrate OOP in Java. * * @author <A HREF="mailto:[email protected]"> * Larry Brown</A> * @version 2.0 */ public class Ship { private double x=0.0, y=0.0, speed=1.0, direction=0.0; private String name; /** Build a ship with specified parameters. */ public Ship(double x, double y, double speed, double direction, String name) { setX(x); setY(y); setSpeed(speed); setDirection(direction); setName(name); } ...
  • 38. Advanced Object Oriented Programming38 www.corewebprogramming.com JavaDoc, Example > javadoc -linkoffline http://java.sun.com/j2se/1.3/docs/api c:jdk1.3docsapi -author -version -noindex -notree Ship.java
  • 39. Advanced Object Oriented Programming39 www.corewebprogramming.com JavaDoc: Result
  • 40. Advanced Object Oriented Programming40 www.corewebprogramming.com Summary • Overloaded methods/constructors, except for the argument list, have identical signatures • Use extends to create a new class that inherits from a superclass – Java does not support multiple inheritance • An inherited method in a subclass can be overridden to provide custom behavior – The original method in the parent class is accessible through super.methodName(...) • Interfaces contain only abstract methods and constants – A class can implement more than one interface
  • 41. Advanced Object Oriented Programming41 www.corewebprogramming.com Summary (Continued) • With polymorphism, binding of a method to a n object is determined at run-time • The CLASSPATH defines in which directories to look for classes • Packages help avoid namespace collisions – The package statement must be first statement in the source file before any other statements • The four visibility types are: public, private, protected, and default (no modifier) – Protected members can only cross package boundaries through inheritance – Default members are only inherited by classes in the same package
  • 42. 42 © 2001-2003 Marty Hall, Larry Brown http://www.corewebprogramming.com core programming Questions?