Download presentation
Presentation is loading. Please wait.
Published byMolly Day Modified over 8 years ago
1
Question of the Day How do you add 5 matches to these 6 & make 9?
2
Question of the Day How do you add 5 matches to these 6 & make 9?
4
Announcements Weekly assignments problems due tomorrow Helps get rid of rust; last week of reviewing material Make sure that your coding skills are back up to speed Next week JUnit tests provided for each problem
5
Calling Methods Some methods really need an object Integer. intValue() is unclear without an object But other methods independent of an instance main(String[]) lacks object to use to call it Why require Integer to call parseInt(String) ?
6
static Methods static methods do not need an instance Behavior defined by class, not an instance parseInt(String) based only on Integer All methods similar in how written & executed May or may not include parameters Local variables can be declared and used Must either be void or declare return type Mix of methods possible for all classes & enums
7
Making Method static Include static keyword in method declaration public static void main(String args[]) public static int parseInt(String s) private static int nextInt() Behaves like any other method (almost) Use locals & parameters like normal As with other code, call (nearly all) other methods Java operators can be used Perform any I/O operations
8
static v. Non- static Methods that are non- static have this Aliased to instance on which method called Can directly use fields & call all methods No this parameter in static methods Code directly using non- static members illegal… … using static fields & methods perfectly legal As always, can use object to access its members
9
BadDuck public class BadDuck { private int quackVolume; public static void printVolume() { System.out.println(“Volume is ” + getVolume()); BadDuck duck = new BadDuck(); duck.quackVolume = 11; System.out.println(“Volume is ”+duck.getVolume()); } public int getVolume() { return quackVolume; } }
10
BadDuck public class BadDuck { private int quackVolume; public static void printVolume() { System.out.println(“Volume is ” + getVolume()); BadDuck duck = new BadDuck(); duck.quackVolume = 11; System.out.println(“Volume is ”+duck.getVolume()); } public int getVolume() { return quackVolume; } } Compiler error. Without an object, whose volume are we getting?
11
BadDuck public class BadDuck { private int quackVolume; public static void printVolume() { System.out.println(“Volume is ” + getVolume()); BadDuck duck = new BadDuck(); duck.quackVolume = 11; System.out.println(“Volume is ”+duck.getVolume()); } public int getVolume() { return quackVolume; } } This is good. There is a duck to get the volume.
12
BadDuck public class BadDuck { public static String duckSpeak() { return “quack”; } } public class UseDuck { public void speak() { System.out.println(BadDuck.duckSpeak()); BadDuck duck = new BadDuck(); System.out.println(duck.duckSpeak()); } }
13
BadDuck public class BadDuck { public static String duckSpeak() { return “quack”; } } public class UseDuck { public void speak() { System.out.println(BadDuck.duckSpeak()); BadDuck duck = new BadDuck(); System.out.println(duck.duckSpeak()); } } This compiles. Static methods do not use an object, so this is preferred way to call them.
14
BadDuck public class BadDuck { public static String duckSpeak() { return “quack”; } } public class UseDuck { public void speak() { System.out.println(BadDuck.duckSpeak()); BadDuck duck = new BadDuck(); System.out.println(duck.duckSpeak()); } } Also fine, but since method is static, still cannot access instance.
15
static Fields Some data belongs to class, not instance Float.MAX_VALUE Citizen.nationalPopulation Instructor.bestProfessor static fields used for any class-based data All of the class instances see same value Do not need an instance to access this value Can be updated via any instance or via class
16
static Code for Tracing public class HHL { static int numTeams; String name; HHL(String newName) { numTeams += 1; name = newName; } public static void main(String[] args) { HHL me = new HHL(“MHz”); HHL you = new HHL(“SFH”); HHL alias = you; alias.name = “Bob”; alias.numTeams = 10; } }
17
Instance v. Class Review Class owns members declared as static Accessing & using member possible without instance Methods lack implicit this parameter no matter what To use a non- static member, instance required Fields’ data instance-specific and not shared by class Can access all members using implicit this parameter Other instances’ members accessible with reference
18
Your Turn Get into your groups and complete activity
19
For Next Lecture Reading about packages & visibility for Wed. What are packages and what do they do? What are the different visibility modifiers in Java? What is javadoc and why is it so amazingly useful? There is weekly assignment posted on Angel tomorrow Assignment due tomorrow; working week-to-week While not due daily, problems still follow lectures
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.