comp 110 constructors
DESCRIPTION
COMP 110 Constructors. Luv Kohli October 13, 2008 MWF 2-2:50 pm Sitterson 014. Announcements. Program 3 assigned today, due October 31, 2pm Ivan Sutherland talk today, 4pm, Sitterson Hall 011. Questions?. How is Lab 5 going?. Today in COMP 110. A couple of notes - PowerPoint PPT PresentationTRANSCRIPT
AnnouncementsAnnouncementsProgram 3 assigned today, due October
31, 2pm
Ivan Sutherland talk today, 4pm, Sitterson Hall 011
2
Running a Java programRunning a Java programMake sure you are running the program
that has a main method in it
Otherwise, you will get this:
java.lang.NoSuchMethodError: main
Exception in thread "main"
5
Local variablesLocal variablesWhat does the greet() method output?
public class Example{ private String str = “hello”; public void doStuff() { String str = “goodbye”; } public void greet() { doStuff(); System.out.println(str); }}
Outputs hello. Why?doStuff() uses local variable str, not instance variable str
6
Local variablesLocal variablesWhat does the greet() method output?
public class Example{ private String str = “hello”; public void doStuff() { str = “goodbye”; } public void greet() { doStuff(); System.out.println(str); }}
Outputs goodbye. Why?Make sure you understand this for step 1 of Lab 5!
7
Creating a new instanceCreating a new instancepublic class AnotherExample
{
private Student jack;
public void myMethod()
{
jack = new Student();
jack.setName(“Jack Smith”);
jack.setAge(19);
}
}
8
Spirit of KansasSpirit of Kansas crash, Feb. 23, 2008 crash, Feb. 23, 2008http://www.youtube.com/watch?v=_ZCp5h1gK2QAfter heavy rains, water affected air-data sensorsThese sensors feed angle of attack and yaw data to
flight-control systemWater distorted preflight readings in 3 of the plane’s 24
sensorsCaused flight-control system to make an erroneous
correction, making the plane stall and crash
11
ConstructorsConstructorsCreate and initialize new objects
Special methods that are called when creating a new object
Student jack = new Student();
12
Calling a constructor
Creating an objectCreating an objectCreate an object jack of class StudentStudent jack = new Student();
Scanner keyboard = new Scanner(System.in);
Create an object keyboard of class Scanner
13
Create an object by calling a constructor
Return memory address of object
Assign memory address of object to variable
ConstructorsConstructorsCan perform any action you write into a
constructor’s definition
Meant to perform initializing actions◦For example, initializing values of instance
variables
14
Similar to mutator methodsSimilar to mutator methodsHowever, constructors create an object
in addition to initializing it
Like methods, constructors can have parameters
15
Example: Pet classExample: Pet classpublic class Pet{ private String name; private int age; private double weight;
public Pet() { name = “No name yet.”; age = 0; weight = 0; }
public Pet(String initName, int initAge, double initWeight)
{ name = initName; age = initAge; weight = initWeight; }}
16
Default constructor
Example: Pet class, setPet methodExample: Pet class, setPet methodpublic void setPet(String newName, int newAge,
double newWeight)
{
name = newName;
age = newAge;
weight = newWeight;
}
17
A closer lookA closer look
public Pet(String initName, int initAge, double initWeight)
{
name = initName;
age = initAge;
weight = initWeight;
}
18
Same name as class name
No return type
ParametersBody
Initializing instance variablesInitializing instance variablesConstructors give values to all instance
variables
Even if you do not explicitly give an instance variable a value in your constructor, Java will give it a default value
Normal programming practice to give values to all instance variables
19
Default constructorDefault constructorConstructor that takes no parameters
public Pet(){ name = “No name yet.”; age = 0; weight = 0;}
Java automatically defines a default constructor if you do not define any constructors
20
Default constructorDefault constructorIf you define at least one constructor, a
default constructor will not be created for you
21
Several constructorsSeveral constructorsYou can have several constructors per
class◦They all have the same name, just different
parameters
22
Example: Pet classExample: Pet classpublic class Pet{ private String name; private int age; private double weight;
public Pet() { name = “No name yet.”; age = 0; weight = 0; }
public Pet(String initName, int initAge, double initWeight)
{ name = initName; age = initAge; weight = initWeight; }}
23
Calling a constructorCalling a constructorPet myPet;
myPet = new Pet(“Frostillicus”, 3, 121.5);
You cannot use an existing object to call a constructor:
myPet.Pet(“Fang”, 3, 155.5); // invalid!
24
Calling methods from constructorsCalling methods from constructors
Just like calling methods from methods
public Pet(String initName, int initAge, double initWeight){ setPet(initName, initAge, initWeight);}
public void setPet(String newName, int newAge, double newWeight){ name = newName; age = newAge; weight = newWeight;}
26
Calling methods from constructorsCalling methods from constructors
Can cause problems when calling public methods◦Problem has to do with inheritance, chapter 8◦Another class can alter the behavior of public
methods
Can solve problem by making any method that constructor calls private
27
Example: Pet classExample: Pet classpublic class Pet{ private String name; private int age; private double weight;
public Pet(String initName, int initAge, double initWeight) { set(initName, initAge, initWeight); }
public void setPet(String newName, int newAge, double newWeight) { set(newName, newAge, newWeight); }
private void set(String newName, int newAge, double newWeight) { name = newName; age = newAge; weight = newWeight; }}
28