1 / 31

Today in COMP 110

Learn about constructors and static variables and methods in Java. Understand the purpose of constructors, how to create objects using constructors, and how to initialize instance variables. Explore the concept of static variables and methods and how they are used in Java programming.

egwen
Télécharger la présentation

Today in COMP 110

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Today in COMP 110 • MouseBrain.java sample solutions • Regrade for Program 3 due Wednesday • Max grade: 75 from here on • Constructors (Review) • Static Variables & Methods • Today is Undergraduate Drop Date

  2. Questions? • Objects / References • Exam Material • Constructors

  3. Program 3 • Example solutions • left/right loop then up/down loop • Modification: do while for each • all directions each iteration • step forward, if scent is weaker step back • lawnmower • (not a good solution) • left/right find max scent then up/down max scent

  4. Creating Objects Student jack = new Student(); • Why does this look like a method call? • Because it is • This is a call to a special method called a constructor

  5. Constructors • A constructor is a special method that is called when an object is created using new • The purpose of a constructor is to perform initializing actions • e.g. initialize the instance variables of an object

  6. Constructors The purpose of a constructor is similar to that of a mutator (setter) Used to set the value of variable(s) However, constructors create an object in addition to initializing it

  7. 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; } }

  8. Constructors • A constructor must have the same name as its class • The constructor for the class Pet is Pet() • The constructor for the class Student is Student() • Constructors do NOT specify a return type • Not even void

  9. Constructors • The classes you have used up to this point use a constructor created automatically by Java • Gives default values to instance variables • May not be what you want • You can specify how instance variables should be initialized by creating your own constructors

  10. Constructors w/ Parameters • Like methods, constructors can have parameters public Pet(String initName, int initAge, double initWeight) { name = initName; age = initAge; weight = initWeight; }

  11. Default Constructor • A constructor that takes no arguments is called a default constructor public Pet() { name = “No name yet.”; age = 0; weight = 0; } • Java automatically defines a default constructor if you do not define any constructors

  12. Multiple Constructors • You can define multiple constructors • All have the same name, but different parameters • Group their definitions together

  13. Constructors • You cannot call a constructor on an existing object Pet myPet = new Pet(); myPet.Pet("Roberto", 1, 150.0); //error • Must use mutators on objects that have already been created myPet.setPet("Roberto", 1, 150.0); //ok

  14. Calling Methods within Constructors Just like calling methods within methods /*constructor*/ public Pet(String initName, int initAge, double initWeight) { setPet(initName, initAge, initWeight); //have the mutator perform the set } /*mutator*/ public void setPet(String newName, int newAge,double newWeight) { name = newName; age = newAge; weight = newWeight; } 14

  15. Static Variables & Methods

  16. The Keyword Static • The keyword static is a specifier that can be applied to instance variables and methods in Java • You are already familiar with some other specifiers such as public, private, final public class Student { private double gpa; public double getGPA() { return gpa; } }

  17. The Keyword Static: Variables • The keyword static is used to indicate that only ONE copy of the instance variable or method should exist for the entire class public class UnitsAndMeasures { //static, all objects share the SAME copy of this variable public static final int FEET_PER_YARD = 3; //NOT static, all objects have their OWN copy of this variable private int feet; }

  18. Example: Static Instance Variables • A class that counts the number of method calls to ALL of its objects public class StaticExample { //static, all objects share the SAME copy of this variable private static numberOfCalls = 0; public void method() { numberOfCalls++; } } public class StaticExampleTester { public static void main(String[] args) { StaticExample se = new StaticExample(); StaticExample se2 = new StaticExample(); se.method(); //changes numberOfCalls to 1 se2.method(); //changes numberOfCalls to 2 } }

  19. The Keyword Static • The keyword static can also be used with methods • The main method public static void main(String[] args) { StaticExample se = new StaticExample(); StaticExample se2 = new StaticExample(); se.method(); //changes numberOfCalls to 1 se2.method(); //changes numberOfCalls to 2 }

  20. Using the Keyword Static • When should you use the keyword static with a method? • When a method does not access instance variables public int pow(int x, int y) { int result = 1; for(int i = 0; i < y; i++) { result *= x; } return result; } Does this method access any instance variables? No. Should be declared static

  21. Example public class DimensionConverter { public static final int INCHES_PER_FOOT = 12; public static double convertFeetToInches(double feet) { return feet*INCHES_PER_FOOT; } public static double convertInchesToFeet(double inches) { return inches / INCHES_PER_FOOT; } }

  22. Accessing Static Variables • From outside the class, static variables that are declared public can be accessed using the name of the class int inchesPerFoot = DimensionConverter.INCHES_PER_FOOT; No Object is Specified! Class Name Static Variable Name

  23. Calling Static Methods • From outside the class, static methods that are declared public can be accessed using the name of the class int inches = DimensionConverter.convertFeetToInches(12); No Object is Specified! Class Name Static Method Name

  24. Restrictions on Static Methods • Static methods CANNOT • Access non-static instance variables • Call non-static methods • Static methods CAN • Be called by any method, static or non-static

  25. Restrictions on Static Methods

  26. Example public classCircle { public static final double PI = 3.14159; private double area; public static double area(double radius) { area = PI * (radius * radius); return area; } } Will this code compile? No. Cannot access non-static instance variables in static methods

  27. Example public classCircle { public static final double PI = 3.14159; private voidprintArea(double area) { System.out.println(area); } public static void area(double radius) { printArea(PI * (radius * radius)); } } Will this code compile? No. Cannot call non-static methods inside static methods

  28. Example public classCircle { public static final double PI = 3.14159; private voidprintArea() { System.out.println(area(3.0)); } public static double area(double radius) { return PI * (radius * radius); } } Will this code compile? Yes. CAN call static methods inside non-static methods

  29. Programming Demo • Grade Distribution • A class to display the distribution of letter grades in a class • Given the number of A,B,C,D, and F’s, compute the percentage of each type of grade • e.g. 15% A’s, 30% B’s, 30% C’s, 15% D’s, 10% F’s • Include accessors and mutators for each type of grade • Draw a bar graph of the grade distribution

  30. Programming Demo • Output • Each * == 2 percent 0 10 20 30 40 50 60 70 80 90 100 | | | | | | | | | | | ************************************************** **** A ************** B *********C *****D ***F

  31. Wednesday • Math class • Wrapper class • Writing & Testing Methods

More Related