Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid...
-
Upload
angela-eaton -
Category
Documents
-
view
218 -
download
0
Transcript of Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid...
![Page 1: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/1.jpg)
Java – An Object Oriented Language
CS 307 Lecture Notes
Lecture Weeks 5-6 (part 2)
Khalid Siddiqui
![Page 2: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/2.jpg)
Objectives
• Get an introduction to classes, objects, fields, constructors, and methods; get a general idea of how a small program is put together
• Get a feel for how methods call each other; learn about private and public methods
• Learn defining and calling methods and constructors
![Page 3: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/3.jpg)
Objectives (Contd.):
• Learn how arguments are passed to methods and constructors and how to return values from methods
• Learn about static (class) and non-static (instance) fields and methods
![Page 4: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/4.jpg)
Methods
• To define a method:– decide between public and private (usually public)– give it a name– specify the types of arguments (formal
parameters) and give them names– specify the method’s return type or chose void– write the method’s code
public [or private] returnType methodName (type1 name1, ..., typeN nameN){ ...} HeaderBody
![Page 5: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/5.jpg)
Methods (cont’d)• A method is always defined inside a class.
• A method returns a value of the specified type unless it is declared void; the return type can be any primitive data type or a class type.
• A method’s arguments can be of any primitive data types or class types.
public [or private] returnType methodName ( ){ ... }
Empty parentheses indicate that a method takes no arguments.
![Page 6: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/6.jpg)
Methods: Java Style
• Method names start with lowercase letters.
• Method names usually sound like verbs.
• The name of a method that returns the value of a field often starts with get:
getWidth, getX
The name of a method that sets the value of a field often starts with set:
setLocation, setText
![Page 7: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/7.jpg)
Overloaded Methods
• Methods of the same class that have the same name but different numbers or types of arguments are called overloaded methods.
• Use overloaded methods when they perform similar tasks:
public void move (int x, int y) { ... }public void move (double x, double y) { ... }public void move (Point p) { ... }
public Fraction add (int n) { ... }public Fraction add (Fraction other) { ... }
![Page 8: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/8.jpg)
Overloaded Methods (cont’d)• The compiler treats overloaded methods as
completely different methods.
• The compiler knows which one to call based on the number and the types of the arguments:
Circle circle = new Circle(5);
circle.move (50, 100);...Point center = new Point(50, 100);circle.move (center);...
public class Circle{ ...
public void move (int x, int y) { ... }
public void move (Point p) { ... } ...}
![Page 9: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/9.jpg)
Constructors
• A constructor is like a method for creating objects of the class.
• A constructor often initializes an object’s fields.
• Constructors do not have a return type (not even void) and they do not return a value.
• All constructors in a class have the same name — the name of the class.
• Constructors may take arguments.
![Page 10: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/10.jpg)
Constructors (cont’d)
• If a class has more than one constructor, they are “overloaded” and must have different numbers and/or types of arguments.
• Programmers often provide a “no-args” constructor that takes no arguments.
• If a programmer does not define any constructors, Java provides one default no-args constructor, which allocates memory and sets fields to the default values.
![Page 11: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/11.jpg)
Constructors (cont’d)
public class Fraction{ private int num, denom;
public Fraction ( ) { num = 0; denom = 1; }
public Fraction (int n) { num = n; denom = 1; } Continued
public Fraction (int p, int q) { num = p; denom = q; reduce (); }
public Fraction (Fraction other) { num = other.num; denom = other.denom; } ...}
“No-args” constructor
Copy constructor
![Page 12: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/12.jpg)
Constructors (cont’d)
• Constructors of a class can call each other using the keyword this — a good way to avoid duplicating code:
... public Fraction (int p, int q) { num = p; denom = q; reduce (); } ...
public class Fraction{ ...
public Fraction (int n) { this (n, 1); } ...
![Page 13: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/13.jpg)
Operator new
• Constructors are invoked using new
Fraction f1 = new Fraction ( );
Fraction f2 = new Fraction (5);
Fraction f3 = new Fraction (4, 6);
Fraction f4 = new Fraction (f3);
0 / 1
5 / 1
2 / 3
2 / 3
![Page 14: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/14.jpg)
Operator new (cont’d)
• You must create an object before you can use it; the new operator is a way to do it
Fraction f;
f= n ew Fraction (2, 3);
f = new Fraction (3, 4);
f is set to null
Now f refers to a valid object
Now f refers to another object (the old object is “garbage-collected”)
![Page 15: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/15.jpg)
Static Fields• A static field (a.k.a. class field or class
variable) is shared by all objects of the class.
• A static field can hold a constant shared by all objects of the class:
• A non-static field (a.k.a. instance field or instance variable) belongs to an individual object.
public class RollingDie{ private static final double slowDown = 0.97; private static final double speedFactor = 0.04; ...
Reserved words:staticfinal
![Page 16: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/16.jpg)
Static Fields (cont’d)
• Static fields are stored with the class code, separately from non-static fields that describe an individual object.
• Public static fields, usually global constants, are referred to in other classes using “dot notation”: ClassName.constName
double area = Math.PI * r * r;setBackground(Color.blue);c.add(btn, BorderLayout.NORTH);System.out.println(area);
![Page 17: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/17.jpg)
Static Fields (cont’d)
• Usually static fields are NOT initialized in constructors (they are initialized either in declarations or in public static methods).
• If a class has only static fields and does not have any non-static (instance) fields, there is no point in creating objects of that class (all of them would be identical).
• Math and System are examples of the above. In fact, they have no public constructors and cannot be instantiated.
![Page 18: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/18.jpg)
Static Methods
• Static methods can access and manipulate a class’s static fields.
• Static methods cannot access non-static fields or call non-static methods of the class.
• Static methods are called using “dot notation”: ClassName.statMethod(...)
double x = Math.random(); double y = Math.sqrt (x); System.exit();
![Page 19: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/19.jpg)
Instance Methods
• Non-static methods are also called instance methods.
• An instance method is called for a particular object using “dot notation”:
objName.instMethod(...);
• Instance methods can access ALL fields and call ALL methods of their class — both class and instance fields and methods.
![Page 20: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/20.jpg)
Static (Class) vs. Non-Static (Instance)public class MyClass{ public static final int statConst; private static int statVar; private int instVar; ... ...
public static int statMethod(...) { statVar = statConst; statMethod2(...);
instVar = ...; instMethod(...); } Continued
public int instMethod(...) { statVar = statConst; inst Var = statConst; instVar = statMethod(...); statVar = instMethod2(...); ... }
public int instMethod2(...) { ... } ...}
Error!
OK
All OK
![Page 21: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/21.jpg)
Static vs. Non-Static (cont’d)
• Note: main is static and therefore cannot access non-static fields or call non-static methods of its class:
public class Hello{ private String message = "Hello, World";
public static void main (String[ ] args) { System.out.println (message); }}
Error:non-static variable message is used in static context (main)
![Page 22: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/22.jpg)
Passing Arguments to Constructors and Methods
• Any expression that has an appropriate data type can serve as an argument:
double a = 3, b = -4; ... Polynomial p = new Polynomial(1.0, -(a + b), a * b); ... double y = p.getValue ( 2 * b - a);
![Page 23: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/23.jpg)
Passing Arguments (cont’d)
• int is promoted to double when necessary:
• A “smaller” type can be promoted to a “larger” type (e.g., int to long, float to double).
The same as: ( 3.0 )
... Polynomial p = new Polynomial (1, -5, 6); double y = p.getValue ( 3 );
The same as: (1.0, -5.0, 6.0)
![Page 24: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/24.jpg)
Passing Arguments (cont’d)
• Primitive data types are always passed “by value”: the value is copied into the parameter.
double x = 3.0; double y = p.getValue ( x );
public class Polynomial{ ... public double getValue (double u) { double v; ... }}
x: 3.0
y:
u: 3.0
v:
copy
u acts like a local variable in getValue
![Page 25: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/25.jpg)
Passing Arguments (cont’d)• The original argument remains unchanged:
public class MyMath{ ... public double square (double x) { x *= x; return x; }}
MyMath calc = new MyMath(); double x = 3.0; double y = calc.square (x); System.out.println (x + " " + y); ...
... the original x is unchanged.Output: 3 9
x here is a copy of the argument. The copy is changed, but...
![Page 26: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/26.jpg)
Passing Objects as Arguments
• Objects are always passed as references: the address is copied, not the object.
Fraction f1 = new Fraction (1, 2); Fraction f2 = new Fraction (5, 17); Fraction f3 = f1.add (f2);public class Fraction{ ... public Fraction add (Fraction f) { Fraction sum; ... }}
f2: addr2
f: addr2
sum:
copy 5/17
f1: addr1
![Page 27: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/27.jpg)
• A method can change an object passed to it as an argument (because the method gets a reference to the original object).
• A method can change the object for which it was called (this object acts like an implicit argument):
Passing Objects as Arguments (cont’d)
panel.setBackround(Color.green);
![Page 28: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/28.jpg)
• Inside a method, this refers to the object for which the method was called. this can be passed to other constructors and methods as an argument:
Passing Objects as Arguments(cont’d)
public class ChessGame { ... Player player1 = new Player (this); ...
![Page 29: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/29.jpg)
return
• A method, unless void, returns a value of the specified type to the calling method.
• The return statement is used to immediately quit the method and return a value:
return expression;
The type of the return value or expression must match the method’s declared return type.
![Page 30: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/30.jpg)
return (cont’d)
• A method can have several return statements; then all but one of them must be inside an if or else (or in a switch):
public someType myMethod (...){ ... if (...) return <expression1>; else return <expression2>; ... return <expression3>;}
![Page 31: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/31.jpg)
return (cont’d)
• A boolean method can return true, false, or the result of a boolean expression:
public boolean myMethod (...){ ... if (...) return true; ... return n % 2 == 0;}
![Page 32: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/32.jpg)
return (cont’d)
• A void method can use a return statement to quit the method early:
public void myMethod (...){ ... if (...) return; ...} No need for a
redundant return at the end
![Page 33: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/33.jpg)
return (cont’d)• If its return type is a class, the method returns
a reference to an object (or null).
• Often the returned object is created in the method using new. For example:
• The returned object can also come from the arguments or from calls to other methods.
public Fraction inverse () { if (num == 0) return null; return new Fraction (denom, num); }
![Page 34: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/34.jpg)
Encapsulation
• Hiding the implementation details of a class (making all fields and helper methods private) is called encapsulation.
• Encapsulation helps in program maintenance and team development.
• A class encapsulates a small set of well-defined tasks that objects of a class can perform.
![Page 35: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/35.jpg)
8-35
public vs. private
• Public constructors and methods of a class constitute its interface with classes that use it — its clients.
• All fields are usually declared private — they are hidden from clients.
• Static constants occasionally may be public.
• “Helper” methods that are needed only inside the class are declared private.
![Page 36: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/36.jpg)
public vs. private (cont’d)
public class MyClass { // Constructors: public MyClass (...) { ... } ... // Public methods: public <sometype> myMethod (...) { ... } ... // Private methods: private <sometype> myMethod (...) { ... } ... // Private fields: private <sometype> myField; ... }
![Page 37: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/37.jpg)
8-37
public vs. private (cont’d)
• A private field is open not just within the object but to the entire class; any object of the same class can access or even modify it.
public class Fraction{ private int num, denom; ... public multiply (Fraction other) { int newNum = num * other.num; ... }}
![Page 38: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/38.jpg)
Accessors and Modifiers
• A programmer often provides methods, called accessors, that return values of private fields; methods that set values of private fields are called modifiers.
• Accessors’ names often start with get, and modifiers’ names often start with set.
• These are not precise categories: the same method can modify several fields or modify a field and also return its old or new value.
![Page 39: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/39.jpg)
Files and Folders
• javac automatically looks for classes (.java or .class files) in the current folder, or, if classpath is set, in folders listed in the classpath string.
• A missing file may be reported as a syntax error when compiling another file.
• If you set classpath, include the current folder. It is denoted by a dot. For example:
.;C:\javamethods\EasyIO
• IDE helps take care of the file locations.
![Page 40: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/40.jpg)
Libraries
• Java programs are usually not written from scratch.
• There are hundreds of library classes for all occasions.
• Library classes are organized into packages. For example:
java.util — miscellaneous utility classes java.awt — windowing and graphics toolkit javax.swing — newer GUI package Swing
![Page 41: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/41.jpg)
import
• Full library class names include the package name. For example:
java.awt.Color javax.swing.JButton
• import statements at the top of your program let you refer to library classes by their short names:
import javax.swing.JButton; ... JButton go = new JButton("Click here");
Fully-qualified name
![Page 42: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/42.jpg)
import (cont’d)
• You can import names for all the classes in a package by using a wildcard .*:
import java.awt.*; import java.awt.event.*; import javax.swing.*;
• java.lang is imported automatically into all classes; defines System, Math, Object, String, and other commonly used classes.
Imports all classes from awt, awt.event, and swing packages
![Page 43: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/43.jpg)
public class SomeClass{
• Fields
• Constructors
• Methods}private: visible only inside this class
public: visible in other classes
Attributes / variables that define the object’s state. Can hold numbers, characters, strings, other objects. Usually private.
Code for constructing a new object and initializing its fields. Usually public.
Actions that an object can take. Can be public or private.
![Page 44: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/44.jpg)
public class FallingCube{
private final int cubeSize;private int cubeX, cubeY; // Cube coordinates...private char randomLetter; // Cube letter
public FallingCube(int size){ cubeSize = size; ...}
public void start(){ cubeX = 0; cubeY = -cubeSize; ...}...
}
Fields
Constructor
Methods
The name of a constructor is always the same as the name of the class.
![Page 45: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/45.jpg)
private (or public) [static] [final] datatype name;
Fields
Usually private
May be present: means the field is shared by all objects in the class
May be present: means the field is a constant
int, double, etc., or an object: String, JButton, FallingCube, Timer
You name it!
![Page 46: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/46.jpg)
Fields (cont’d)
• May have primitive data types:
int, char, double, etc.
private int cubeX, cubeY; // cube coordinates...private char randomLetter; // cube letter
![Page 47: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/47.jpg)
Fields (cont’d)
• May be objects of different types:
private FallingCube cube;private Timer t;private static final String letters;
![Page 48: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/48.jpg)
Constructors
• Constructors are like methods for creating objects of a class.
• Most constructors initialize the object’s fields.
• Constructors may take parameters.
• A class may have several constructors that differ in the number or types of their parameters.
• All of a class’s constructors have the same name as the class.
![Page 49: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/49.jpg)
Constructors (cont’d)
go = new JButton("Go");
![Page 50: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/50.jpg)
Constructors (cont’d)
• Call them using the new operator:
cube = new FallingCube(CUBESIZE);
...
t = new Timer(delay, this)
Calls FallingCube’s constructor with CUBESIZE as the parameter
Calls Timer’s constructor with delay and this (i.e. this object) as the parameters (see Java docs for javax.swing.Timer)
![Page 51: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/51.jpg)
Methods
• Call them for a particular object:
cube.start();
whiteboard.dropCube();
randomLetter = letters.charAt(i);
• But call static (“class”) methods for the whole class, not a specific object:
y = Math.sqrt (x);
![Page 52: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/52.jpg)
Methods (cont’d)
• Constructors and methods can call other public and private methods of the same class.
• Constructors and methods can call only public methods of another class.
Class X
private method
Class Y
public method public method
![Page 53: Java – An Object Oriented Language CS 307 Lecture Notes Lecture Weeks 5-6 (part 2) Khalid Siddiqui.](https://reader035.fdocuments.net/reader035/viewer/2022062409/56649ee45503460f94bf3694/html5/thumbnails/53.jpg)
Methods (cont’d)
• You can call methods with specific arguments:
g.drawRect (75, 25, 150, 50); g.drawString ("Welcome", 120, 50);
• The number and types of arguments must match the method’s parameters:
public void drawRect ( int x, int y, int width, int height ) {...}
public void drawString ( String msg, int x, int y ) {...}