130 likes | 147 Views
Learn key concepts such as class modifiers, garbage collection, naming conflicts, and more in Java programming. Dive into the principles of encapsulation, class modifiers, variable naming, and method invocation, with practical examples and explanations. Understand the difference between objects and classes, instance variables, and static variables while exploring the importance of constructors and scope of variables. Enhance your Java knowledge with expert insights from Professor Evan Korth at New York University.
E N D
Computer Science IClasses and ObjectsProfessor: Evan KorthNew York University Evan Korth New York University
Road Map • Class modifiers • Garbage collection • Naming conflicts • this • Reference members • Reading: • Liang 5: chapter 6: 6.9, 6.12 • Liang 6: chapter 7: 7.10, 7.12, 7.13 • Liang 7: chapter 7: 7.9, 7.10, 9.3, 9.4 Evan Korth New York University
review • What does encapsulation mean? • What is a data member? • What is a method member? • What is the difference between an object and a class? • What does the following line of code do? • Integer i; • What is i above? • What happens if you make a class without a constructor? Evan Korth New York University
Review (cont) • What do the following modifiers mean when applied to a data member? • final • static • public • private • What if there is no modifier? • What is the principle of least privilege? Evan Korth New York University
Review (cont) • What data type does a set method usually return? • What parameter does a get method usually take? • A class has 3 objects instantiated, it also has a static variable called x and an instance variable called y. • How many x values are stored in memory? • How many y values are stored in memory? • What is the scope of an instance variable? • Can you call an instance method without an instance of the class? Evan Korth New York University
Class modifiers • No modifier (default) means the class is visible in the package in which it is declared. • public means it is visible to everything. • There are two others (final and abstract) which we will discuss later in the semester. Evan Korth New York University
Garbage collection • When an object is no longer referenced by any reference variable, that object is referred to as garbage. • Java automatically tracks garbage objects and frees its memory when the garbage collector runs. • We do not have direct control over when the garbage is collected. • We can suggest to the compiler to collect garbage but it is not guaranteed that it will run. • To suggest garbage collection we make the following method call: • System.gc(); Evan Korth New York University
Anonymous objects • An object without a reference is called an anonymous object. • It is created, used and immediately marked as garbage. Evan Korth New York University
Variable name conflicts • It is possible to have a variable name in a method with the same name as a data member in a class. • In such case, the local method variable “hides” the data member variable. Evan Korth New York University
Keyword this • The keyword this is used within a class to refer to the specific instance of the class that is being used. • A variable in a class’ method that has the same name as a field will “shadow” the field. You can access the field using the this keyword. • You cannot use the this keyword in static methods. (why?) Evan Korth New York University
Another use for this • this (args) in a constructor will invoke another constructor of that class. • If you call another constructor from a constructor, it must be the first line in the calling constructor. • This is useful when you overload your constructors. In general, a constructor with fewer parameters should call a constructor with more parameters. Evan Korth New York University
Composition • The term composition refers to the practice of having an object as a data member within another object. • What is actually stored is a reference to the member object. (therefore we can have self referential objects) • The default value for a reference variable is null. Evan Korth New York University
Passing reference variables to methods • All variables in Java are passed using call by value. However, since object variables are really references to objects, passing an object is simulated pass by reference. • Objects passed to a method and modified by that method will have the changes reflected in the calling method. • Primitive variables passed to a method and modified by that method will NOT have the changes reflected in the calling method. Evan Korth New York University