csci 431-001 java language programmingksuweb.kennesaw.edu/~mkang9/teaching/cs7455/02.java... ·...
TRANSCRIPT
![Page 1: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/1.jpg)
JAVA REVIEW
Dr. Mingon Kang
Computer Science, Kennesaw State University
![Page 2: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/2.jpg)
Review
Programming Style
Variables
Classes
Arrays
OOP
Encapsulation
Inheritance
Polymorphism
Abstracts
Files
Interfaces
![Page 3: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/3.jpg)
Programming Style
Indentation
Good
if (nInput < nMax)
{
if (nInput > nMin)
if (nInput > nMedian)
cout << nInput;
}
else
{
cout << nInput;
}
![Page 4: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/4.jpg)
Programming Style
Indentation
Wrong
if (nInput < nMax)
{
if (nInput > nMin)
if (nInput > nMedian)
cout << nInput;
}
else
{
cout << nInput;
}
![Page 5: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/5.jpg)
Programming Style
Comments
Coding Style Conventions https://msdn.microsoft.com/en-us/library/aa378932(VS.85).aspx
Hungarian Notation
https://msdn.microsoft.com/en-us/library/aa260976(VS.60).aspx
E.g., nInput, cType, szName[], *pName
Blank space both side of operators
E.g., int a = 2; (0)
int a= 2; (X)
![Page 6: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/6.jpg)
Javadoc
Generate Java code documentation in HTML format from Java source code
http://www.tutorialspoint.com/java/java_documentation.htm
/**
* The HelloWorld program implements an application that
* simply displays "Hello World!" to the standard output.
*
* @author Mingon Kang
* @version 1.0
* @since 2016-08-01
*/
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
![Page 7: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/7.jpg)
Variables
A name used to refer to a certain location in
memory
Requires that variables must be declared with the
variable type before it is used.
![Page 8: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/8.jpg)
Primitive Types
Copyright © 2012 Pearson Addison-Wesley. All rights reserved.
![Page 9: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/9.jpg)
Fundamentals of Computer Systems
Bit: zero or one
Morse Code, Punched Card, Electrical Switch, Two distinct Voltage or current levels
1 Byte = 8 bits
historically for a single character
A unit to access a memory
Data can be accessed 8 bits or multiples of 8 bits at a time
char in Java takes 2 bytes for Unicode
16 bit vs 32 bits vs 64 bits computers?
Processor registers (small amount of storage in a CPU)
Data, Address, General purpose, Conditional, and so on..
![Page 10: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/10.jpg)
Data representation
Integer (in C/C++)
2 bytes in 16 bits systems
4 bytes in 32/64 bits systems
Unsigned integer: 0 ~ 2𝑛 − 1
Signed integer (two's complement): −2𝑛−1 ~ 2𝑛−1− 1
Integer: http://en.wikipedia.org/wiki/Integer_(computer_science)
Two’s complement: http://en.wikipedia.org/wiki/Two%27s_complement
![Page 11: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/11.jpg)
Data representation
Character (1byte in C/C++)
ASCII code (American Standard Code for Information Interchange)
ASCII code Table: http://www.ascii-code.com/
DEC OCT HEX BIN SymbolHTML
NumberHTML Name Description
32 040 20 00100000   Space
33 041 21 00100001 ! !Exclamation
mark
35 043 23 00100011 # # Number
36 044 24 00100100 $ $ Dollar
37 045 25 00100101 % %Procenttecke
n
![Page 12: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/12.jpg)
Data representation
48 060 30 00110000 0 0 Zero
49 061 31 00110001 1 1 One
50 062 32 00110010 2 2 Two
51 063 33 00110011 3 3 Three
65 101 41 01000001 A AUppercase
A
66 102 42 01000010 B BUppercase
B
97 141 61 01100001 a aLowercase
a
98 142 62 01100010 b bLowercase
b
![Page 13: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/13.jpg)
Unicode
Unicode (2 bytes)
A character set used by the Java language that includes all the ASCII characters plus many of the characters used in languages with a different alphabet from English
Express most of the world's writing systems
http://unicode-table.com/en/#control-character
![Page 14: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/14.jpg)
Data representation
Float: single-precision floating-point format
A bit for sign (0: positive, 1: negative)
8 bits for exponent
23 bits for fraction
http://en.wikipedia.org/wiki/Single-precision_floating-point_format
![Page 15: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/15.jpg)
Data representation
Double: double-precision floating-point format
http://en.wikipedia.org/wiki/Double-precision_floating-point_format
![Page 16: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/16.jpg)
Classes
Most important component of object-oriented
programming
Every program is a class in JAVA
Every library consists of classes
Programmer-defined type
Consists of “Fields” and “Methods”
![Page 17: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/17.jpg)
Classes
Model real world objects
State and Actions
For example
Human (Name, DOB, Gender, … : Running, Sleeping,…)
Cars (Model name, Manufacturer, Current speed, Current
gear, … : Going forward, Applying brake, Changing gear,
…)
Students (Name, CWID, … : Adding/Dropping classes,
Applying graduation…)
![Page 18: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/18.jpg)
Primitive type values vs. Class Type values
A primitive type value is a single piece of data
A class type value can have multiple data and
actions
Can have multiple different data
Can have methods that represent actions.
![Page 19: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/19.jpg)
Classes
Model real world objects
State and Actions
For example
Human (Name, DOB, Gender, … : Running, Sleeping,…)
Cars (Model name, Manufacturer, Current speed, Current
gear, … : Going forward, Applying brake, Changing gear,
…)
Students (Name, CWID, … : Adding/Dropping classes,
Applying graduation…)
![Page 20: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/20.jpg)
Classes
Objects
Often use object and instance word interchangeably
A unique copy of a class
Share the blueprint of a class, but has unique member
data
Read: http://java67.blogspot.com/2014/11/difference-between-
instance-and-object-in-java.html
![Page 21: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/21.jpg)
Classes
Create an object of a class
Use new operator
Combined as follows:
Human objMingonKang;
objMingonKang = new Human();
Human objMingonKang = new Human();
![Page 22: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/22.jpg)
Instance variables and Methods
In order to refer to a particular instance variables
(fields) or methods, preface it with its object name
as follows:
Human objMingonKang;
objMingonKang = new Human();
System.out.print(objMingonKang.strName);
objMingonKang.greet();
![Page 23: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/23.jpg)
Arrays
A data structure for a collection of data that is all
of the same data type.
The data type can be either primitive data types or
classes.
Multiple values, but one variable name
![Page 24: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/24.jpg)
Creating Arrays
Creating one-dimensional arrays
DataType[] array_name;
DataType[] array_name = new DataType[LENGTH];
E.g.
double[] score;
Score = new double[5];
or
double[] score = new double[5];
![Page 25: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/25.jpg)
Initializing Arrays
Arrays are automatically initialized to null
Can be initialized when declared
The array size is automatically set to the number of the
given values.
int[] CWID = {500100, 500101, 500102};
![Page 26: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/26.jpg)
Arrays and References
A variable of an array type holds a reference.
Arrays are objects
A variable of an array type holds the address of
where the array objects is stored in memory
2012 Pearson Addison-Wesley
![Page 27: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/27.jpg)
Arrays as Parameters
Arrays can be used as parameters to methods
Array parameters behave like objects of a class
A method can change the values stored in the indexed
variables of the array.
A method with an array parameter have to specify the
data type of the array
![Page 28: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/28.jpg)
Arrays as Parameters
public class Sample{
public static void example(double[] a){
a[0] = 1;
}
public static void main(String[] args)
{
double[] a = new double[5];
Sample.example(a);
System.out.println(a[0]);
}
}
![Page 29: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/29.jpg)
Array assignment
Assignment operator =
Copy the memory address
double[] a = new double[5];
double[] b = new double[5];
a = b; // what is it doing?
![Page 30: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/30.jpg)
Array assignment
Copy each element one by one using for loop
for (i = 0; (i < a.length) && (i < b.length); i++)
b[i] = a[i];
![Page 31: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/31.jpg)
Array comparison
Equality operator ==
Compare whether they are stored in the same location
in the memory
double[] a = new double[5];
double[] b = new double[5];
a == b; // what is it doing?
![Page 32: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/32.jpg)
Multidimensional Arrays
Two-dimensional arrays
Three-dimensional arrays
Even higher-dimensional arrays
Simply use as many square brackets as there are
indices
![Page 33: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/33.jpg)
Multidimensional Arrays
Syntax
Example)
double[][] grades = new double[100][10];
int[][] images = new int[100][200];
Person[][] p = new Person[10][100];
double[][][] grades = new double[10][20][30];
![Page 34: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/34.jpg)
Multidimensional Arrays
A two-dimensional array is an array of arrays
The variable ‘a’ contains a reference to a one-
dimensional array of size 5 with a base type of char[]
‘a[i]’ contains a reference to a one-dimensional array
of size 12.
Pearson Addison-Wesley
char[][] a = new char[5][12];
![Page 35: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/35.jpg)
Multidimensional Arrays
A two-dimensional array is an array of arrays
Pearson Addison-Wesley
![Page 36: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/36.jpg)
‘length’ in Multidimensional Arrays
The instance variable ‘length’ in multidimensional
arrays
char[][] a = new char[5][12];
a.length // 5
a[0].length // 12
![Page 37: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/37.jpg)
Ragged Arrays
Each row in a two-dimensional array need not have
the same number of elements Ragged Arrays
double[][] a = new double[5][];
a[0] = new double[5];
a[1] = new double[10];
a[2] = new double[4];
![Page 38: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/38.jpg)
Inheritance
Three main programming mechanisms that constitute
object-oriented programming (OOP)
Encapsulation
Inheritance
Polymorphism
![Page 39: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/39.jpg)
Inheritance
Examples of inheritance
Bicycle -> Mountain Bike, Racing bicycle
Student -> high school student, undergraduate student,
graduate student
User -> Administrator, normal user, child account
Employees -> hourly employees, salaried employees
![Page 40: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/40.jpg)
A class hierarchy
2012 Pearson Addison-Wesley
![Page 41: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/41.jpg)
Inheritance
Inheritance allows a class (derived class) to use the
properties and methods of another class (base
class)
The base class is first defined and compiled, and
then more specialized version of the class (derived
class) are defined by adding instance variables
and methods
The new class: derived class, subclass, or child class
The original class: base class, superclass, or parent class
![Page 42: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/42.jpg)
Inheritance
A derived class automatically has all the instance
variables and methods that the base class has.
Can have additional instance variable and methods
as well
Codes can be reused without having to copy it into
the definitions of the derived classes
2012 Pearson Addison-Wesley
![Page 43: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/43.jpg)
Inheritance
The Java Platform Class Hierarchy
The object class (defined in the java.lang
package) defines and implements behaviors commons
to all classes.
E.g., Hierarchy for package java.util
http://docs.oracle.com/javase/7/docs/api/java/util/packa
ge-tree.html
![Page 44: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/44.jpg)
Inheritance
Syntax
public class ParentClass{
…
}
public class ChildClass extends ParentClass{
…
}
![Page 45: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/45.jpg)
Inheritance
// A class to display the attributes of the vehicle
class Vehicle
{
String color;
int speed;
int size;
void attributes() {
System.out.println("Color : " + color);
System.out.println("Speed : " + speed);
System.out.println("Size : " + size);
}
}
http://beginnersbook.com/2013/03/inheritance-in-java/
![Page 46: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/46.jpg)
Inheritance
// A subclass which extends for vehicle
class Car extends Vehicle {
int CC;
int gears;
void attributescar() {
System.out.println("Color of Car : " + color);
System.out.println("Speed of Car : " + speed);
System.out.println("Size of Car : " + size);
System.out.println("CC of Car : " + CC);
System.out.println("No of gears of Car : " +
gears);
}
}
http://beginnersbook.com/2013/03/inheritance-in-java/
![Page 47: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/47.jpg)
Inheritance
public class Test {
public static void main(String[] args) {
Car b1 = new Car();
b1.color = "Blue";
b1.speed = 200 ;
b1.size = 22;
b1.CC = 1000;
b1.gears = 5;
b1.attributescar();
}
}
http://beginnersbook.com/2013/03/inheritance-in-java/
![Page 48: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/48.jpg)
Inheritance
// A class to display the attributes of the vehicle
class Vehicle {
String color;
private int size;
public int getSize() {
return size;
}
public void setSize(int i) {
size = i;
}
}
http://beginnersbook.com/2013/03/inheritance-in-java/
![Page 49: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/49.jpg)
Inheritance
// A subclass which extends for vehicle
class Car extends Vehicle {
int CC;
int gears;
int color;
void attributescar() {
// Error due to access violation
//System.out.println("Size of Car : " + size);
}
}
http://beginnersbook.com/2013/03/inheritance-in-java/
![Page 50: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/50.jpg)
Inheritance
public class Test {
public static void main(String[] args) {
Car b1 = new Car();
b1.color = 500; b1.setSize(22);
b1.CC = 1000; b1.gears = 5;
System.out.println("Color of Car : " + b1.color);
System.out.println("Size of Car : " +
b1.getSize());
System.out.println("CC of Car : " + b1.CC);
System.out.println("No of gears of Car : " +
b1.gears);
}
}
http://beginnersbook.com/2013/03/inheritance-in-java/
![Page 51: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/51.jpg)
Method Overriding
A derived class inherits methods from the base class,
but it can change or override an inherited method.
In order to override a method definition, a new
definition of the method is simply placed in the class
definition, just like any other method that is added to
the derived class
2012 Pearson Addison-Wesley
![Page 52: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/52.jpg)
Method Overriding
A method can only be written in Subclass
The argument list should be exactly the same as
that of the overridden method
The return type should be the same or a subtype of
the return type declared in the original overridden
method in the super class
http://crunchify.com/java-method-overriding-examples-and-concepts-overriding-rules/
![Page 53: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/53.jpg)
Method Overriding
class Company{
public void address(){
System.out.println(“Address of Company”);
}
}
Class eBay extends Company{
public void address(){
System.out.println(“Address of eBay”);
}
}
http://crunchify.com/java-method-overriding-examples-and-concepts-overriding-rules/
![Page 54: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/54.jpg)
Method Overriding
public class CompnayTest{
public static void main(String[] args){
// Company reference and object
Company a = new Company();
// Company reference but eBay object
Company b = new eBay();
a.address();
b.address();
}
}
http://crunchify.com/java-method-overriding-examples-and-concepts-overriding-rules/
![Page 55: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/55.jpg)
Changing the Access Permission of an Overridden Method
The access permission of an overridden method can
be changed from private in the base class to public
(or some other more permissive access) in the
derived class
However, the access permission of an overridden
method can not be changed from public in the base
class to a more restricted access permission in the
derived class
2012 Pearson Addison-Wesley
![Page 56: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/56.jpg)
Changing the Access Permission of an Overridden Method
Given the following method header in a base case:
private void doSomething()
The following method header is valid in a derived class:
public void doSomething()
However, the opposite is not valid
Given the following method header in a base case:
public void doSomething()
The following method header is not valid in a derived class:
private void doSomething()
2012 Pearson Addison-Wesley
![Page 57: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/57.jpg)
The final modifier
If the modifier final is placed before the
definition of a method, then that method may not
be redefined in a derived class
It the modifier final is placed before the
definition of a class, then that class may not be used
as a base class to derive other classes
2012 Pearson Addison-Wesley
![Page 58: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/58.jpg)
The super constructor
A derived class uses a constructor from the base class to initialize all the data inherited from the base class
In order to invoke a constructor from the base class, it uses a special syntax:
public derivedClass(int p1, int p2, double p3)
{
super(p1, p2);
instanceVariable = p3;
}
In the above example, super(p1, p2); is a call to the base class constructor
2012 Pearson Addison-Wesley
![Page 59: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/59.jpg)
The super constructor
A call to the base class constructor can never use the
name of the base class, but uses the keyword super
instead
A call to super must always be the first action taken
in a constructor definition
An instance variable cannot be used as an argument
to super
2012 Pearson Addison-Wesley
![Page 60: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/60.jpg)
The super constructor
If a derived class constructor does not include an invocation of super, then the no-argument constructor of the base class will automatically be invoked
This can result in an error if the base class has not defined a no-argument constructor
Since the inherited instance variables should be initialized, and the base class constructor is designed to do that, then an explicit call to super should always be used
2012 Pearson Addison-Wesley
![Page 61: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/61.jpg)
The this constructor
Within the definition of a constructor for a class, this can be used as a name for invoking another constructor in the same class
The same restrictions on how to use a call to super apply to the this constructor
If it is necessary to include a call to both super and this, the call using this must be made first, and then the constructor that is called must call super as its first action
2012 Pearson Addison-Wesley
![Page 62: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/62.jpg)
The this constructor
Often, a no-argument constructor uses this to invoke an explicit-value constructor No-argument constructor (invokes explicit-value constructor using this
and default arguments):
public ClassName()
{
this(argument1, argument2);
}
Explicit-value constructor (receives default values):
public ClassName(type1 param1, type2 param2)
{
. . .
}
2012 Pearson Addison-Wesley
![Page 63: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/63.jpg)
class Shape {
private int length;
private int breadth;
// default Constructor
Shape() {
length = 0;
breadth = 0;
}
// Parameterized Constructor
Shape(int len, int bdth) {
length = len;
breadth = bdth;
}
void showattributes() {
System.out.println("length : " + length);
System.out.println("breadth : " + breadth);
}
} http://beginnersbook.com/2013/03/inheritance-in-java/
![Page 64: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/64.jpg)
// A subclass which extends for shape
class Rectangle extends Shape {
private String type;
// default Constructor
Rectangle() {
type = null;
}
// Parameterized Constructor
Rectangle(String ty, int len, int bdth) {
super(len,bdth);
type = ty;
}
void showattributes() {
// showattributes() of class Shape is called
super.showattributes();
System.out.println("type : " + type);
}
} http://beginnersbook.com/2013/03/inheritance-in-java/
![Page 65: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/65.jpg)
public class Test {
public static void main(String args[]) {
Rectangle rect = new Rectangle("Blue",5,7);
// showattributes() in rectangle is called
rect.showattributes();
}
}
http://beginnersbook.com/2013/03/inheritance-in-java/
![Page 66: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/66.jpg)
Protected Access
If a method or instance variable is modified by protected(rather than public or private), then it can be accessed
by name
Inside its own class definition
Inside any class derived from it
In the definition of any class in the same package
The protected modifier provides very weak protection compared to the private modifier
It allows direct access to any programmer who defines a suitable derived class
Therefore, instance variables should normally not be marked protected
2012 Pearson Addison-Wesley
![Page 67: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/67.jpg)
Access Levels
Modifier Class Package Subclass World
Public Y Y Y Y
Protected Y Y Y N
package
(No modifier)Y Y N N
private Y N N N
![Page 68: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/68.jpg)
Multiple supers
JAVA does not allow to use multiple supers.
It is only valid to use super to invoke a method from a direct parent
Repeating super will not invoke a method from some other ancestor class
For example, if the Employee class were derived from the class Person, and the HourlyEmployee class were derived form the class Employee , it would not be possible to invoke the toString method of the Person class within a method of the HourlyEmployee class
super.super.toString() // ILLEGAL!
2012 Pearson Addison-Wesley
![Page 69: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/69.jpg)
The class object
Every class is a descendent of the class Object in
Java
Even though a class is defined that is not explicitly a
derived class of another class, it is still automatically
a derived class of the class Object
The class Object is in the package java.lang which
is always imported automatically.
2012 Pearson Addison-Wesley
![Page 70: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/70.jpg)
The class object
Every Java class can call methods of the class
Object
E.g., equals and toString methods
Default implementation of equals() class provided by
java.lang.Object compares memory location and only
return true if two reference variable are pointing to
same memory location i.e. essentially they are same
object.
2012 Pearson Addison-Wesley
![Page 71: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/71.jpg)
Overriding the equals method
public boolean equals(Object otherObject)
{
if(otherObject == null)
return false;
if(getClass() != otherObject.getClass())
return false;
Car otherCar = (Car)otherObject;
return (color.equals(otherCar.color) &&
speed == otherCar.speed && size == otherCar.size &&
CC == otherCar.CC && gears == otherCar.gears);
}
![Page 72: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/72.jpg)
OOP
Three main programming mechanisms that constitute
object-oriented programming (OOP)
Encapsulation
Inheritance
Polymorphism
![Page 73: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/73.jpg)
Encapsulation
To hide the implementation details from users
In Java, a mechanism of wrapping the data and
code acting one the data together.
The variables of a class will be hidden from other class
with access modifiers.
Then, the variables can be accessed only through the
methods of their current class. Data hiding
http://beginnersbook.com/2013/05/encapsulation-in-java/
![Page 74: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/74.jpg)
Encapsulation
Conventional Approach
Declare the variables of a class as private
Provide public setter/getter methods to modify and
view the variables values
http://www.tutorialspoint.com/java/java_encapsulation.htm
![Page 75: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/75.jpg)
Encapsulation
Benefits of Encapsulation:
The fields of a class can be made read-only or write-
only
A class can have total control over what is stored in its
fields.
The users of a class do not know how the class stores its
data.
A class can change the data type of a field and users
of the class do not need to change any of their code.
http://www.tutorialspoint.com/java/java_encapsulation.htm
![Page 76: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/76.jpg)
Polymorphism
Literally means
a state of having many shapes
The capacity to take on different forms
In Java, process objects of various types and classes
through a single/uniform interface.
http://www.sitepoint.com/quick-guide-to-polymorphism-in-java/
![Page 77: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/77.jpg)
Polymorphism
Example:
In Pac-man game
Two objects: Pac-man and Ghost
Both pac-mans and ghosts can be derived from a
PacManObject class that defines basic behaviors of the
objects: Move()
However, Pac-man and Ghost may have different details in
the Move() method.
Pac-man eats pac-dots, while ghosts do not
![Page 78: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/78.jpg)
Method Overloading
One solution for polymorphism
Overloaded Methods
public class Pacman {
public void move() {
System.out.println("Pacman::move()");
}
public void move(boolean eatPacdots){
if (eatPacdots) eatPacdots();
}
}
![Page 79: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/79.jpg)
Method Overloading
One solution for polymorphism
Overloaded Methods
public class PacmanGame {
public static void main(String[] args) {
Pacman pacman = new Pacman();
pacman.move();
pacman.move(true);
}
}
![Page 80: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/80.jpg)
Method Overriding
A variable is declared as superclass but is created
with child class.
Java decides what method to call during runtime
public class PacmanObject {
public void move() {
System.out.println(“PacmanObject:Move()”);
}
}
public class Ghost extends PacmanObject {
}
![Page 81: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/81.jpg)
Method Overriding
A variable is declared as superclass but is created
with child class.
Java decides what method to call during runtime
public class Pacman extends PacmanObject {
public void move() {
super.move();
System.out.println("Pacman::move()");
}
public void move(boolean eatPacdots){
super.move();
if (eatPacdots) eatPacdots();
}
}
![Page 82: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/82.jpg)
Method Overriding
A variable is declared as superclass but is created
with child class.
Java decides what method to call during runtime
public class PacmanGame {
public static void main(String[] args){
// obj is declared as an PacmanObject
PacmanObject obj1 = new Pacman();
PacmanObject obj2 = new Ghost();
obj1.move();
obj2.move();
}
}
![Page 83: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/83.jpg)
Method Overriding
A variable is declared as superclass but is created
with child class.
Java decides what method to call during runtime
public class PacmanGame {
public static void main(String[] args){
PacmanObject[2] objs;
objs[0] = new Pacman();
objs[1] = new Ghost();
for (int i = 0; i < objs.length; i++)
objs[i].move();
}
}
![Page 84: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/84.jpg)
Method Binding
Process to decide what method to call
Two types
Static Polymorphism (early binding)
Compile time polymorphism
Private, final, and static methods
Method overloading
Dynamic polymorphism (late binding)
Runtime binding
Method overriding
![Page 85: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/85.jpg)
Method Binding
class Top {
public String f(Object o) {return "Top";}
}
class Sub extends Top {
public String f(String s) {return "Sub";}
public String f(Object o) {return "SubObj";}
}
http://stackoverflow.com/questions/5658553/question-about-java-overloading-dynamic-binding
![Page 86: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/86.jpg)
Method Binding
public class Test {
public static void main(String[] args) {
Sub sub = new Sub();
Top top = sub;
String str = "Something";
Object obj = str;
System.out.println(top.f(obj));
System.out.println(top.f(str));
System.out.println(sub.f(obj));
System.out.println(sub.f(str));
}
}
http://stackoverflow.com/questions/5658553/question-about-java-overloading-dynamic-binding
![Page 87: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/87.jpg)
Method Binding
Sub sub = new Sub(); // Ref: Sub, Act: Sub
Top top = sub; // Ref: Top, Act: Sub
String str = "Something"; // Ref: String, Act: String
Object obj = str; // Ref: Object, Act: String
top.f(obj); // Top.f(Object) at compile-time
// Sub.f(Object) at run-time
top.f(str); // Top.f(Object) at compile-time
// Sub.f(Object) at run-time
sub.f(obj);
sub.f(str); // Static Binding (overloading)
http://stackoverflow.com/questions/5658553/question-about-java-overloading-dynamic-binding
![Page 88: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/88.jpg)
Abstract classes
An abstract class contains abstract methods
Abstract method
The method has a head, but no method body
The method is implemented in the subclass.
Postpone the definition of a method until a subclass
is defined
![Page 89: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/89.jpg)
Abstract classes
For example, sort classes
variables and methods in common
Different algorithms in a sort method
Sort
Selection Sort Insertion Sort Bubble Sort Quick Sort
![Page 90: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/90.jpg)
Abstract Methods
Define methods without method body
Cannot be private
Use ‘abstract’ modifier in its both class and method
heading
public abstract class ClassName
{
public abstract void methodName(…);
}
![Page 91: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/91.jpg)
Abstract classes
Cannot instantiate, but only can be sub-classed
If a derived class of an abstract class adds to or
does not define all of the abstract methods, then it
is abstract class too (but with abstract modifier)
![Page 92: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/92.jpg)
Abstract classes
An object of an abstract class cannot be created
However, the abstract class can be used a reference
variable
![Page 93: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/93.jpg)
Files
Two types: Text file and Binary file
Text file (ASCII file)
The file data contains only ASCII values
Designed to be read by human beings
Binary file
Consist of a sequence of binary values
Designed to be read by programs
More efficient to process than text files
![Page 94: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/94.jpg)
Streams
Stream in Java
Object that enables the flow of data between a
program and I/O device
Input Stream
Data flows into a program
Generally from the keyboard or a file
Output Stream
Data flows out of a program
Generally flow to a screen or to a file
![Page 95: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/95.jpg)
Streams
System.in: input stream
System.out: output stream
Scanner keyboard = new Scanner(System.in)
System.out.println(“Output Stream”);
![Page 96: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/96.jpg)
Text Files
Reading text files
BufferedReader stream class
Writing text files
PrintWriter stream class
![Page 97: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/97.jpg)
Read a Text File
BufferedReader
Stream class that read a text file
Methods: read(…) and readLine(…)
Need to import a set of followings
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
![Page 98: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/98.jpg)
Read a Text File
No constructor that takes a file name directly.
Use FileReader class that convert the file name
to an object for the constructor’s parameter
BufferedReader reader;
reader = new BufferedReader(new
FileReader(FileName));
![Page 99: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/99.jpg)
Path Names
If only a file name is used as an argument, it
assumes that the file is in the same directory or
folder as the one in which the program is run
If it is not in the same directory, the full or relative
path name have to be given.
![Page 100: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/100.jpg)
Path Names
Path names are specified depends on the operation systems
UNIX
“/user/etc/data/data.txt”
Windows
“C:\\data\\data.txt”
Reference
http://www.mkyong.com/java/how-to-construct-a-file-path-in-java/
![Page 101: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/101.jpg)
Read a Text File
read() method
Read a single character and returns a value of integer
type
Need a type cast
readLine() method
Check FileRead1.java and FileRead2.java
char next = (char)reader.read();
![Page 102: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/102.jpg)
Exception Handling
When performing file I/O, many exceptional
situations may be thrown.
Many of these exception classes are subclasses of
the class IOException
![Page 103: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/103.jpg)
Exception Handling
BufferedReader object may throw two kinds of
exceptions
FileNotFoundException
IOException
Both exceptions should be handled
![Page 104: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/104.jpg)
Exception Handling
Opening a file should be placed inside a try
block
try{
…
}
catch(FileNotFoundException e){
…
}
catch(IOException e){
…
}
![Page 105: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/105.jpg)
Write a text file
PrintWriter
Stream class that write to a text file
Import of
import java.io.PrintWriter;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
![Page 106: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/106.jpg)
Write a text file
Connect to the file FileName
Check JAVA document of PrintWriter
PrintWriter writer;
writer = new PrintWriter(new
FileOutputStream(FileName));
For appending:
writer = new PrintWriter(new
FileOutputStream(FileName, true));
![Page 107: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/107.jpg)
Write a text file
May throw FileNotFoundException that
means the file could not be created for some
reasons
When a program finishes writing, it should close the
stream connection by
outputStreamName.close()
![Page 108: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/108.jpg)
Write a text file
When writing to a file, the data is buffered rather
than physically writing to the file as soon as
possible.
The data is saved in a temporary space
When enough data is received in the buffer, the
flush() method is invoked, the buffered data is
physically written to the file all at once
The close() method invokes the method flush.
![Page 109: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/109.jpg)
Binary Files
Reading binary files
ObjectInputStream stream class
Writing binary files
ObjectOutputStream stream class
![Page 110: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/110.jpg)
Write a Binary File
ObjectOutputStream
Stream class that write a binary file
Import of followings
import java.io.ObjectOutputStream;
import java.io.FileOutStream;
import java.io.IOException;
![Page 111: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/111.jpg)
Write a Binary File
Connect to a binary file
The constructor for FileOutputStream may throw a FileNotFoundException
The constructor for ObjectOutputStream may throw an IOException
ObjectOutputStream outputFile = new
ObjectOutputStream(new
FileOutputStream(FileName));
![Page 112: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/112.jpg)
Write a Binary File
ObjectOutputStream methods
writeInt
writeDouble
writeChar
writeBoolean
write
…
flush
close
![Page 113: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/113.jpg)
Read a Binary File
ObjectInputStream
Stream class that read a binary file
Import of followings:
import java.io.ObjectInputStream;
import java.io.FileInputStream;
import java.io.IOException;
![Page 114: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/114.jpg)
Read a Binary File
Connect to a binary file
The constructor for FileInputStream may throw a FileNotFoundException
The constructor for ObjectInputStream may throw an IOException
ObjectInputStream inputFile = new
ObjectInputStream(new
FileInputStream(FileName));
![Page 115: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/115.jpg)
Read a Binary File
ObjectInputStream methods
readInt
readDouble
readChar
readBoolean
…
close
![Page 116: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/116.jpg)
Read a Binary File
If the file contains multiple types, each item type
must be read in exactly the same order it was
written to the file
![Page 117: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/117.jpg)
RandomAccessFile
Read and write to the same file
Enable us to random access to particular parts of a
file
A random access file consists of a sequence of
numbered bytes (like an array)
seek() method: move a cursor in a file
Good in very large files
![Page 118: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/118.jpg)
RandomAccessFile
Two constrcutors
RandomAccessFile(File file, String mode)
RandomAccessFile(String name, String mode)
![Page 119: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/119.jpg)
RandomAccessFile
Mode
“r”: reading only
“rw”: both reading and writing to the file
“rws”: flushes the contents of the file and metadata (e.g. the modification date of the file)
“rwd”: flushes the contents of the file, but metadata might not change until the file is closed.
“rw” only flushes when flush() is invoked and doesn't change metadata until closing the file.
“rwd” is much slower for writes than “rw”, and “rws” is slower again
![Page 120: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/120.jpg)
Binary I/O of objects
After interface subject, with serialization
![Page 121: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/121.jpg)
Reference
http://www.mkyong.com/tutorials/java-io-tutorials/
![Page 122: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/122.jpg)
Interfaces
Reference type (not a class)
Collection of abstract methods
![Page 123: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/123.jpg)
Interface declaration
An interface is implicitly abstract
Each methods is also implicitly abstract
Abstract keyword is not necessary
Methods are implicitly public
public interface Interface_name
{
// any final, static fields
// any abstract methods
}
![Page 124: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/124.jpg)
Interface declaration
public interface Human
{
public void eat();
public void sleep();
}
![Page 125: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/125.jpg)
Implementing interfaces
A class implements an interface
Like signing a contract , agree to perform the specific
behaviors of the interface.
The class can declare itself as abstract when not
specifying the interface
A class uses implements keyword to implement an
interface
![Page 126: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/126.jpg)
Implementing interfaces
public class Me implements Human
{
public void eat(){
System.out.println(“I eat”);
}
public void sleep(){
System.out.println(“I sleep”);
}
public static void main(String[] args)
{
Me m = new Me();
m.eat();
m.sleep();
}
}
![Page 127: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/127.jpg)
Default Method
Java8 introduces “Default Method”, which allows
developer to add new methods to the interface
without breaking the existing implementation of
these interface
Although concrete class fails to provide an
implementation for the method, it provides
flexibility to allow to use default method.
![Page 128: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/128.jpg)
Default Method
public interface oldInterface {
public void existingMethod();
default public void newDefaultMethod() {
System.out.println("New default method");
}
}
public class oldInterfaceImpl implements oldInterface
{
public void existingMethod() {
// existing implementation is here…
}
public static void main(String[] args)
{
oldInterfaceImpl o = new oldInterfaceImpl();
o.newDefaultMethod();
}
![Page 129: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/129.jpg)
Interfaces
A class can implement more than one interface at a
time
A class can extend only one class, but implement
many interfaces
An interface can extend another interface, similarly
to the way that a class can extend another class.
http://www.tutorialspoint.com/java/java_interfaces.htm
![Page 130: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/130.jpg)
Extending Interfaces
public interface Sports
{
public void setHomeTeam(String name);
public void setVisitingTeam(String name);
}
public interface Football extends Sports
{
public void homeTeamScored(int points);
public void visitingTeamScored(int points);
public void endOfQuarter(int quarter);
}
http://www.tutorialspoint.com/java/java_interfaces.htm
![Page 131: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/131.jpg)
Extending Interfaces
public interface Hockey extends Sports
{
public void homeGoalScored();
public void visitingGoalScored();
public void endOfPeriod(int period);
public void overtimePeriod(int ot);
}
![Page 132: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/132.jpg)
Extending Multiple Interfaces
Interface can extend more than one parent
interface
public interface Hockey extends Sports, Event
{
…
}
![Page 133: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/133.jpg)
Interface vs Class
Interface is NOT a class
Essentially a type that can be satisfied by any class
that implements the interface.
Abstract classes are meant to be inherited from
Strong relationship between the two classes
The relationship between the interface and the class
implementing the interface is not necessarily strong
http://www.programmerinterview.com/index.php/java-questions/interface-vs-abstract-class/
![Page 134: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/134.jpg)
Interface vs Class
Interfaces are a good substitute for multiple
inheritance
Abstract class can have some implementation code,
while an interface cannot provide any method
definitions
http://www.programmerinterview.com/index.php/java-questions/interface-vs-abstract-class/
![Page 135: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/135.jpg)
The Serializable interface
An object can be represented as a sequence of
bytes that includes the object's data
In order to make a class serializable, simply add
implements Serializable to the heading of the class
definition
public class SomeClass implements Serializable
![Page 136: CSCI 431-001 Java Language Programmingksuweb.kennesaw.edu/~mkang9/teaching/CS7455/02.Java... · 2017-01-13 · A unit to access a memory Data can be accessed 8 bits or multiples of](https://reader036.vdocuments.us/reader036/viewer/2022080719/5f792ceb3363f614d46cae4f/html5/thumbnails/136.jpg)
The Serializable interface
Classes that require special handling during the
serialization and deserialization process must
implement special methods with these exact
signatures:
• private void writeObject(java.io.ObjectOutputStream out) throws IOException
• private void readObject(java.io.ObjectInputStream in) throws IOException,
ClassNotFoundException;
• private void readObjectNoData() throws ObjectStreamException;