Presentation is loading. Please wait.

Presentation is loading. Please wait.

COMP 110 Constructors Luv Kohli October 13, 2008 MWF 2-2:50 pm Sitterson 014.

Similar presentations


Presentation on theme: "COMP 110 Constructors Luv Kohli October 13, 2008 MWF 2-2:50 pm Sitterson 014."— Presentation transcript:

1 COMP 110 Constructors Luv Kohli October 13, 2008 MWF 2-2:50 pm Sitterson 014

2 Announcements Program 3 assigned today, due October 31, 2pm Ivan Sutherland talk today, 4pm, Sitterson Hall 011 2

3 Questions? How is Lab 5 going? 3

4 Today in COMP 110 A couple of notes Friday’s in-class exercise Constructors 4

5 Running a Java program Make 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

6 Local variables What 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

7 Local variables What 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

8 Creating a new instance public class AnotherExample { private Student jack; public void myMethod() { jack = new Student(); jack.setName(“Jack Smith”); jack.setAge(19); } 8

9 Friday’s in-class exercise 9

10 The perils of incorrectly initialized data 10

11 Spirit of Kansas crash, Feb. 23, 2008 http://www.youtube.com/watch?v=_ZCp5h1gK2Q After heavy rains, water affected air-data sensors These sensors feed angle of attack and yaw data to flight-control system Water distorted preflight readings in 3 of the plane’s 24 sensors Caused flight-control system to make an erroneous correction, making the plane stall and crash 11

12 Constructors Create and initialize new objects Special methods that are called when creating a new object Student jack = new Student(); 12 Calling a constructor

13 Creating an object Create an object jack of class Student Student 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

14 Constructors Can perform any action you write into a constructor’s definition Meant to perform initializing actions ◦ For example, initializing values of instance variables 14

15 Similar to mutator methods However, constructors create an object in addition to initializing it Like methods, constructors can have parameters 15

16 Example: Pet class public 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

17 Example: Pet class, setPet method public void setPet(String newName, int newAge, double newWeight) { name = newName; age = newAge; weight = newWeight; } 17

18 A 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 Parameters Body

19 Initializing instance variables Constructors 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

20 Default constructor Constructor 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

21 Default constructor If you define at least one constructor, a default constructor will not be created for you 21

22 Several constructors You can have several constructors per class ◦ They all have the same name, just different parameters 22

23 Example: Pet class public 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

24 Calling a constructor Pet 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

25 Change an object using mutators myPet.setPet(“Fang”, 1, 155.5); 25

26 Calling 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

27 Calling 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

28 Example: Pet class public 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

29 Wednesday Talk about Lab 5 More about constructors Static variables and methods 29


Download ppt "COMP 110 Constructors Luv Kohli October 13, 2008 MWF 2-2:50 pm Sitterson 014."

Similar presentations


Ads by Google