Document 7825515

Download Report

Transcript Document 7825515

Lecture 3
Object Oriented Programming in Java
Language Basics
Classes, Interfaces and Packages
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
1
Assignment B
• Primitive objects and primitive object wrapper
classes
• throwing exceptions
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
2
Today’s Lecture
• Trail: Learning the Java Language
• Lesson: Classes, Interfaces, and Packages
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
3
What makes up a class:
•
•
•
•
•
class declaration
class body
constructor for the class
variables
methods
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
4
Inheritance Tree
• An object that is instantiated from a class
contains all the variables and methods defined
for that that class and all its ancestors.
• However, the methods may have been
modified (overridden) somewhere along the
way. Also, access to those variables and
methods may have been restricted through
use of the public, private, and protected
keywords
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
5
The parents rule
• Java does not involve a specification of an
access specifier, public, private, or protected
at the inheritance interface. In other words,
inheritance access control cannot be used in
Java to modify the access control assigned to
a member of the parent class:
– in other words (english) once the parent defines the
access to its methods and variables, the children
cannot modify them.
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
6
Inheritance
• extends keyword
• Default superclass: Object
– Inheriting the methods of the Object class
– inheriting the variables of the Object class
• class A inherits from class B
– class A inherits the variables from class B
– class A inherits the methods from class B
• Inheritance is restricted to the non-private
methods and variables
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
7
Examples of inheritance
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
8
Public, Final & Abstract classes
• Classes can be declared to be either public,
abstract, or final, or some combination of
the three.
• However, before we can make any sense out
of the public keyword, we need to know a
little about how classes are grouped into
packages.
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
9
Packages
• We will see packages later on in more details.
• In simple words, packages are a way to group
classes together.
• A class defines its package by adding the
keyword “package” at the beginning of the
file.
• Example:
– package com.mellon.aPackageName
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
10
Public classes
• Explicitly define the public keyword otherwise
your class will be visible only within its own
package
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
11
Abstract Classes
• An abstract class is a class that is designed to
be inherited from (subclassed). It is not
intended to be a class from which objects are
instantiated (you cannot do a “new” on the
class)
• Note that the methods themselves can be
abstract
• Why create abstract classes?
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
12
Final Classes
• The opposite of an abstract class is a final
class. A final class cannot be subclassed.
• Why use final classes?
• Can a class be both abstract and final?
• Examples:
– abstract and final
– final class A is extended by class B
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
13
Examples of abstract and final classes
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
14
Interfaces
• Interfaces are like the roles that a class can
play
• A class that implements an interface must
define the methods that are specified by the
interface
• Whenever a class claims to implement an
interface, you can be assured that it provides
a definition for all the methods declared within
that interface. Otherwise, the class cannot
be compiled.
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
15
Implementing Interfaces
• A class may implement one or more interfaces
using the keyword implements and a
comma-delimited list of interface names as
shown below:
class MyClassName extends MySuperClass
implements MyInterface, YourInterface
{
//body of class
}
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
16
Examples with interfaces
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
17
Constructors
• Constructors are used to instantiate a class
• Even if you don’t explicitly define a constructor
the compiler creates one for you
• It is safer to explicitly define the
constructor(s)
• Constructor(s) are methods that have the
same name has the class name and return
void
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
18
Multiple Constructors
• A class can have multiple constructors
• The only difference between them is the list of
parameters that comes with the constructor
• Why are they parameters to the constructors?
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
19
A “super” keyword
• The super keyword allows a constructor to
call the constructor of a parent class
• If present in the constructor the super
keyword must appear first in the body of the
method
• Why must super appear first?
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
20
Access control to the constructors
• A constructor can be private, protected, or
public
• Always explicitly specify the access
• If all the constructors are private how do I
instantiate the class
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
21
Examples of constructors
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
22
Variables
• Types of variables
– Member variables
• class variables
• Instance variables
– Method variables
• local variables
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
23
The “static” keyword
• The keyword static determines whether the
variable is a class variable or an instance
variable
• To access a static variable you must qualify it
with the class name (NOT the instance name)
– for example:
ClassName.theVariableName = aValue;
• Why should we use static variable?
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
24
Final Variables
• Determines whether the variable is a constant
or not
• Example:
– declaring a final object and trying to assign a new
value to it
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
25
Controlling access to member variables
• Classes can protect their member variables
from being access by other objects
June 1, 2000
Specifier
class
private
X
protected
subclass
package
X
X*
X
public
X
X
X
package
X
world
X
X
Object Oriented Programming in Java (95-707)
Java Language Basics
26
Subtleties of the private keywords
• It is applied at the class level. In other words,
objects of the same types have access to each
other’s private variables
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
27
Subtleties of the protected keyword
• The protected member variable of a super
class is accessible from a subclass only if the
subclass and the superclass are in the same
package
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
28
Subtleties of the public keyword
• None!
• Everyone can see a public member variable.
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
29
Subtleties of the package keyword
• You get package level access if you don’t
specify the access level
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
30
Examples of access levels on member
variables
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
31
Access level to member methods
• Works just like member variables access level
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
32
Instance Vs. Class Members
(methods and variables)
• “instance” member by default
• use “static” to override the default and it the
member becomes a “class” member
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
33
Class Members
• All instances of a class share the same copy of
the class member
• class variables can be accessed via the
instance (use the instance name) or via the
class itself (use the class name)
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
34
Instance Members
• By default all members are instance members
• Every instantiated class carries its own copy of
the instance variable. In other words, instance
variables are not shared across instances of
the class
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
35
Examples of instance and class members
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
36
Packages
• Purpose:
– grouping relevant classes together
– avoiding name clashes among developers
• Notation:
package mypackage
public class AnyClass {
….
}
• Scope of the package statement:
– entire source file
• If you don’t declare a package:
– the compiler puts your class in the default package
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
37
Package name conventions
• Use reversed Internet domain name:
– com.company.package
– example:
• com.mellon.lineofbusiness.packagename
• com.sun...
• edu.cmu…
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
38
Using a package
• Strategy 1:
– use the packagename.classname approach
– example:
» com.mellon.aClassName s = new com.mellon.aClassName();
• Strategy 2
– import the package
– put import statement at the beginning of the file and
after the package statement:
import com.mellon.*;
…
aClasName s = new aClassName();
– Use wildcards where necessary
• java.lang.* is always imported by default
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
39
Compiler, Run-time and Packages
• Compiler (javac):
– creates directories that reflect the package hierarchy
– compiles the files and places them in their respective
directory hierarchy
– uses the “classpath” option on the command line to
find the source files within the hierarchy of
directories.
– Example:
» javac -classpath .;c:\myclasses;c:\jdk\lib\classes.zip *.java
• Run-time (java):
– uses the “classpath” option on the command line to
find classes within the hierarchy of directories.
– Example:
» java -classpath .;c:\myclasses;c:\jdk\lib\classes.zip
June 1, 2000
Object Oriented Programming in Java (95-707)
Java Language Basics
40