Download presentation
Presentation is loading. Please wait.
Published byOwen Bradley Modified over 8 years ago
1
Objects and Classes CS 3250
2
The Building Blocks Classes: –Classes have variables and methods. –No global variables, nor global functions. –All methods are defined inside classes (except native methods) Java class library, over 3,000 classes: –GUI, graphics, image, audio –I/O –Networking –Utilities: set, list, hash table
3
Organization of Java Programs Java provides mechanisms to organize large-scale programs in a logical and maintainable fashion. –Class --- highly cohesive functionalities –File --- one class or more closely related classes –Package --- a collection of related classes or packages
4
Organization of Java Programs The Java class library is organized into a number of packages: –java.awt --- GUI –java.io --- I/O –java.util --- utilities –java.applet --- applet –java.net --- networking See the online API documentation –link on class page
5
Objects and Object Variables Suppose you have the following line in your program: String word = "kryptonite"; What kind of thing is word ?
6
Objects and Object Variables Suppose you have the following line in your program: String word = "kryptonite"; What kind of thing is word ? Hint: It is not an object of class String.
7
Objects and Object Variables Suppose you have the following line in your program: String word = "kryptonite"; What kind of thing is word ? Answer: It is a variable that can refer to objects of class String.
8
Object References String word = "kryptonite"; Sometimes it is very important to understand how reference variables work, like in the following situations... "kryptonite" word instance of String
9
Null References String word; int length = word.length(); What will happen when this code executes? word
10
Aliases String word = "kryptonite"; String word2 = word; "kryptonite" word instance of String word2 Aliases of mutable objects can be tricky. Why?
11
Aliases bob.setSalary(50000); sue.setSalary(60000); bob sue salary ???
12
Variable, Object, Class, Type Variables have types, objects have classes. A variable is a storage location and has an associated type. An object is an instance of a class or an array. The type of a variable is determined at compilation time. The class of an object is determined at run time.
13
Variable, Object, Class, Type A variable in Java can be of: primitive type --- hold exact value reference type --- hold pointers to objects null reference: an invalid object object reference: pointer to an object whose class is assignment compatible with the type of the variable.
14
Reference Type and Garbage Collection All objects reside on the heap –Must use the new operator A “reference” is returned –More like a pointer than a C++ reference You can’t “delete” the object through its reference It is cleaned up by the garbage collector –After the object is no longer used –When the GC is good and ready to do it! –Memory leaks are practically non-existent in Java
15
[ClassModifiers] class ClassName [ extends SuperClass] [ implements Interface 1, Interface 2...] { ClassMemberDeclarations } public class MapDisplay extends JPanel implements MouseListener, KeyListener {... } Class Declaration
16
public Accessible everywhere One public class allowed per file. The file must be named ClassName.java private Only accessible within the class Accessible within the current class package. abstract A class that contains abstract methods final No subclasses Class Modifiers
17
[MethodModifiers] Type Name ( [ParameterList] ) { Statements } public static void main(String[] args) { System.out.println ("Red alert, shields up!"); } [FieldModifiers] Type FieldName 1 [ = Initializer 1 ], FieldName 2 [ = Initializer 2 ]...; private final int MAX_SPEED = 60; Method And Field Declaration
18
For both methods and fields: public protected private static final Final methods cannot be overridden For methods only: abstract synchronized native For fields only: volatile transient Method and Field Modifiers
19
public class Point { public int x, y; public void move(int dx, int dy) { x += dx; y += dy; } Point point1; // Point not created Point point2 = new Point(); point1 = point2; point1 = null; x and y are initialized to their default initial values. Class Declaration Example
20
public class Point { public int x = 0, y = 0; public void move(int dx, int dy) { x += dx; y += dy; } Point point1 = new Point(); // (0,0) Explicit Initializer
21
Constructors Constructors are invoked after default initial values are assigned. No-arg constructor is provided as a default when no other constructors are provided. public class Point { public int x, y; public Point() { // no-arg x = 0; y = 0; } public Point(int x0, int y0) { x = x0; y = y0; } Point point1 = new Point(); // no-arg Point point2 = new Point(20, 20);
22
Initialization Block 1.Data fields initialized to default value (0, false, or null) 2.Field initializers and initialization blocks are executed in order they appear 3.If first line of constructor calls another constructor, that other constructor is executed. 4.The body of the constructor is executed. public class Point { public int x, y; // Object initialization block // Executes before constructor { x = 0; y = 0; }
23
Object Reference: this You can use this inside a method, It refers to the current object on which the method is invoked. It's commonly used to pass the object itself as a parameter aList.insert(this);
24
Object Reference: this It can also be used to access hidden variables: public class Point { public int x, y; public Point(int x, int y) { this.x = x; this.y = y; } It can also be used to call other constructors
25
Wrappers Objects that hold primitives –Read-only! Used when objects are called for –In collections, for example More expensive than using primitives Have symbolic constants for min/max, conversion functions to primitives Example: Primitives.java, Wrappers.java –Compares time with primitives to time with wrappers
26
Static variable or fields: one per class, rather than one per object. Static variables are also known as class variables. –Initialized when the class is loaded by the JVM Non-static variables are called instance variables. class IDCard { public long id; protected static long nextID = 0; public IDCard() { id = nextID++; } Static Variables
27
class IDCard { public long id; protected static long nextID = 0;... public static void skipID() { nextID++; } Static Methods A static method can only access static variables and invoke other static methods –(unless an object reference is used) can not use this reference
28
IDCard.skipID(); // the preferred way IDCard mycard = new IDCard(); mycard.skipID(); Invoking Methods Non-static methods must be invoked through an object reference: object_reference.method(parameters) Static methods can be invoked through an object reference or the class name: class_name.method(parameters) So, you can do either of the following: Why is this way preferred?
29
Passing Parameters All parameters are passed by value: A copy of the parameter will always be made, but never a copy of an object. Why not? doSales(bob, 2005); void doSales(Employee emp1, int year) { String name = emp1.getName(); int sales = emp1.getSales(year); emp1.setCommission(sales * pct); }
30
bob emp1 commission Passing Parameters doSales(bob, reportYear); void doSales(Employee emp1, int year) { String name = emp1.getName(); int sales = emp1.getSales(year); emp1.setCommission(sales * pct); } ??? 2005 year reportYear
31
final "variables" Final variables are named constants. class CircleStuff { static final double pi =3.1416; } Final parameters are useless.
32
Blank finals Allows you to declare a final without initializing it Applies to fields as well as local vars Must still be initialized before it’s used: class MyClass { final String s; MyClass(String s) { this.s = s; } Can not be initialized after construction.
33
The toString() method converts objects to strings. public class Point { public int x, y;... public String toString() { return "(" + x + "," + y + ")"; } Then, you can do Point p = new Point(10,20); System.out.println("A point at " + p); // Output: A point at (10,20) The toString() Method
34
Access Specifications Public –Available anywhere ( public keyword) –Only one public class per file allowed Protected –Available in subclasses, and in the package –protected keyword Package (“Friendly”) –Available in the package only –No access specifier Private –Available in class only ( private keyword)
35
What’s a Package? A set of classes (.class files) in the same directory –Similar to C++ namespaces –Don’t have to use import –A “substitute” for friend in C++ The directory must match the package name –Can have multiple segments (dot-separated) –java.util corresponds (loosely) to the subdirectory java/util Use the package keyword –Must be first non-comment line of file
36
The Class Path A search path Consists of directories or JAR files All package directories must be subdirectories of a directory in the class path -classpath option CLASSPATH environment variable
37
The Unnamed Package The “default” package All classes not in a named package are in this package –Can span multiple directories –Uses the classpath
38
JAR Files “Java Archive” A way of collecting/compressing.class files jar –cf myJar.jar *.class For faster loading of applets And for distributing pre-compiled software Uses ZIP format Can run from command-line with the “java” command java –jar myJar.jar
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.