static Review class and instance variables int is a data type 3 is a value or instance of that type A class is a data type an object is a value instance of that type A class variable belongs to the class as a whole there is only one of it An instance variable belongs to individual objects there is one of it for each object but none for the class as a whole You can t refer to an instance variable if you don t have an instance You always have the class The keyword static marks a variable as a class variable Review class and instance methods An instance method belongs to an individual object you can use it only by sending a message to that object Example String s myTextField getText A class static method belongs to a class Examples y Math abs x if Character isLetter ch Example class Circle static double PI 3 1416 int x y double radius Circle circle1 new Circle Circle circle2 new circle1 Circle Circle PI 3 1416 circle2 x 50 y 50 radiu 5 0 s x 80 y 50 radiu 8 0 s Static context An application requires a public static void main String args method It must be static because before your program starts there aren t any objects to send messages to This is a static context a class method You can send messages to objects if you have some objects myTextField setText Hello You cannot send a message to yourself or use any instance variables this is a static context not an object non static variable xxx cannot be referenced from a static context About the term Static poisoning refers the fact that in an application you can t access non static variables or methods from a static context so you end up making more and more things static Static poisoning is not a term that is in widespread use I made it up There is a simple solution to this problem An example of static poisoning public class StaticPoison static int x static int y public static void main String args doOneThing static void doOneThing x 5 doAnotherThing static void doAnotherThing y 10 Another example public class Narcissus int x int y int z public static void main String args x 5 y 10 z x y An attempted solution public class Narcissus int x int y int z public static void main String args Narcissus myself new Narcissus myself x 5 myself y 10 myself z myself x myself y The best solution public class Narcissus int x int y int z public static void main String args new Narcissus doItAll void doItAll x 5 y 10 z x y Summary In an application frequently the best way to write the main method is as follows class MyClass public static void main String args MyClass myself new MyClass myself doAllTheWork void doAllTheWork note not static The End
View Full Document
Unlocking...