Object-Oriented Basics
Classes
Blueprints for Objects
You're building a game with many enemies. Each enemy has health, position, and attack methods. Instead of managing separate variables, a class bundles the data and behavior into one reusable blueprint.
Your first class
Define a class with fields and methods.
public class FirstClass {
public static void main(String[] args) {
System.out.println("=== Your First Class ===\n");
// Create an object from the Dog class
Dog myDog = new Dog();
// Set field values
String dogName = "Buddy";
int dogAge = 3;
myDog.name = dogName;
myDog.breed = "Golden Retriever";
myDog.age = dogAge;
// Read field values
System.out.println("Name: " + myDog.name);
System.out.println("Breed: " + myDog.breed);
System.out.println("Age: " + myDog.age);
// Call methods
System.out.println();
myDog.bark();
myDog.bark();
}
}
// Class definition
class Dog {
// Fields (instance variables)
String name;
String breed;
int age;
// Method
void bark() {
System.out.println(name + " says: Woof!");
}
}
public class FirstClass {
public static void main(String[] args) {
System.out.println("=== Your First Class ===\n");
// Create an object from the Dog class
Dog myDog = new Dog();
// Set field values
String dogName = "Luna";
int dogAge = 3;
myDog.name = dogName;
myDog.breed = "Golden Retriever";
myDog.age = dogAge;
// Read field values
System.out.println("Name: " + myDog.name);
System.out.println("Breed: " + myDog.breed);
System.out.println("Age: " + myDog.age);
// Call methods
System.out.println();
myDog.bark();
myDog.bark();
}
}
// Class definition
class Dog {
// Fields (instance variables)
String name;
String breed;
int age;
// Method
void bark() {
System.out.println(name + " says: Woof!");
}
}
public class FirstClass {
public static void main(String[] args) {
System.out.println("=== Your First Class ===\n");
// Create an object from the Dog class
Dog myDog = new Dog();
// Set field values
String dogName = "Rex";
int dogAge = 3;
myDog.name = dogName;
myDog.breed = "Golden Retriever";
myDog.age = dogAge;
// Read field values
System.out.println("Name: " + myDog.name);
System.out.println("Breed: " + myDog.breed);
System.out.println("Age: " + myDog.age);
// Call methods
System.out.println();
myDog.bark();
myDog.bark();
}
}
// Class definition
class Dog {
// Fields (instance variables)
String name;
String breed;
int age;
// Method
void bark() {
System.out.println(name + " says: Woof!");
}
}
public class FirstClass {
public static void main(String[] args) {
System.out.println("=== Your First Class ===\n");
// Create an object from the Dog class
Dog myDog = new Dog();
// Set field values
String dogName = "Buddy";
int dogAge = 1;
myDog.name = dogName;
myDog.breed = "Golden Retriever";
myDog.age = dogAge;
// Read field values
System.out.println("Name: " + myDog.name);
System.out.println("Breed: " + myDog.breed);
System.out.println("Age: " + myDog.age);
// Call methods
System.out.println();
myDog.bark();
myDog.bark();
}
}
// Class definition
class Dog {
// Fields (instance variables)
String name;
String breed;
int age;
// Method
void bark() {
System.out.println(name + " says: Woof!");
}
}
public class FirstClass {
public static void main(String[] args) {
System.out.println("=== Your First Class ===\n");
// Create an object from the Dog class
Dog myDog = new Dog();
// Set field values
String dogName = "Buddy";
int dogAge = 7;
myDog.name = dogName;
myDog.breed = "Golden Retriever";
myDog.age = dogAge;
// Read field values
System.out.println("Name: " + myDog.name);
System.out.println("Breed: " + myDog.breed);
System.out.println("Age: " + myDog.age);
// Call methods
System.out.println();
myDog.bark();
myDog.bark();
}
}
// Class definition
class Dog {
// Fields (instance variables)
String name;
String breed;
int age;
// Method
void bark() {
System.out.println(name + " says: Woof!");
}
}
myDog ← ⟨Dog A⟩, dogName ← Buddy, dogAge ← 3, myDog.name ← Buddy
2public class FirstClass {3 public static void main(String[] args) {4 System.out.println("=== Your First Class ===\n");5 6 // Create an object from the Dog class //?create7 Dog myDog→ ⟨Dog A⟩ = new Dog();8 9 // Set field values //?fields10 String dogName→ Buddy = "Buddy"; //@dogName="Luna", "Rex"11 int dogAge→ 3 = 3; //@dogAge=1, 712 myDog.name→ Buddy = dogNameBuddy;13 myDog.breed→ Golden Retriever = "Golden Retriever";14 myDog.age→ 3 = dogAge3;15 16 // Read field values17 System.out.println("Name: " + myDog.nameBuddy);18 System.out.println("Breed: " + myDog.breedGolden Retriever);19 System.out.println("Age: " + myDog.age3);20 21 // Call methods //@var=_,!22 System.out.println(); //@var=_,!23 myDog.bark(); //@var=_,!24 myDog.bark(); //@var=_,!output=== Your First Class === Name: Buddy Breed: Golden Retriever Age: 3void bark()
pass 1 of 222 System.out.println(); //@var=_,!23 myDog.bark(); //@var=_,!24 myDog.bark(); //@var=_,!25 }26}2728// Class definition //?classdef29class Dog {30 // Fields (instance variables) //?fieldsdef31 String name;32 String breed;33 int age;34 35 // Method //@var=_,!36 void bark() { //?method37 System.out.println(nameBuddy + " says: Woof!"); //@var=_,!38 } //@var=_,!outputBuddy says: Woof!void bark()
pass 2 of 223 myDog.bark(); //@var=_,!24 myDog.bark(); //@var=_,!25 }26}2728// Class definition //?classdef29class Dog {30 // Fields (instance variables) //?fieldsdef31 String name;32 String breed;33 int age;34 35 // Method //@var=_,!36 void bark() { //?method37 System.out.println(nameBuddy + " says: Woof!"); //@var=_,!38 } //@var=_,!outputBuddy says: Woof!
myDog ← ⟨Dog A⟩, dogName ← Luna, dogAge ← 3, myDog.name ← Luna
1public class FirstClass {2 public static void main(String[] args) {3 System.out.println("=== Your First Class ===\n");4 5 // Create an object from the Dog class6 Dog myDog→ ⟨Dog A⟩ = new Dog();7 8 // Set field values9 String dogName→ Luna = "Luna";10 int dogAge→ 3 = 3;11 myDog.name→ Luna = dogNameLuna;12 myDog.breed→ Golden Retriever = "Golden Retriever";13 myDog.age→ 3 = dogAge3;14 15 // Read field values16 System.out.println("Name: " + myDog.nameLuna);17 System.out.println("Breed: " + myDog.breedGolden Retriever);18 System.out.println("Age: " + myDog.age3);19 20 // Call methods21 System.out.println();22 myDog.bark();23 myDog.bark();output=== Your First Class === Name: Luna Breed: Golden Retriever Age: 3void bark()
pass 1 of 221 System.out.println();22 myDog.bark();23 myDog.bark();24 }25}2627// Class definition28class Dog {29 // Fields (instance variables)30 String name;31 String breed;32 int age;33 34 // Method35 void bark() {36 System.out.println(nameLuna + " says: Woof!");37 }outputLuna says: Woof!void bark()
pass 2 of 222 myDog.bark();23 myDog.bark();24 }25}2627// Class definition28class Dog {29 // Fields (instance variables)30 String name;31 String breed;32 int age;33 34 // Method35 void bark() {36 System.out.println(nameLuna + " says: Woof!");37 }outputLuna says: Woof!
myDog ← ⟨Dog A⟩, dogName ← Rex, dogAge ← 3, myDog.name ← Rex, myDog.breed ← Golden Retriever
1public class FirstClass {2 public static void main(String[] args) {3 System.out.println("=== Your First Class ===\n");4 5 // Create an object from the Dog class6 Dog myDog→ ⟨Dog A⟩ = new Dog();7 8 // Set field values9 String dogName→ Rex = "Rex";10 int dogAge→ 3 = 3;11 myDog.name→ Rex = dogNameRex;12 myDog.breed→ Golden Retriever = "Golden Retriever";13 myDog.age→ 3 = dogAge3;14 15 // Read field values16 System.out.println("Name: " + myDog.nameRex);17 System.out.println("Breed: " + myDog.breedGolden Retriever);18 System.out.println("Age: " + myDog.age3);19 20 // Call methods21 System.out.println();22 myDog.bark();23 myDog.bark();output=== Your First Class === Name: Rex Breed: Golden Retriever Age: 3void bark()
pass 1 of 221 System.out.println();22 myDog.bark();23 myDog.bark();24 }25}2627// Class definition28class Dog {29 // Fields (instance variables)30 String name;31 String breed;32 int age;33 34 // Method35 void bark() {36 System.out.println(nameRex + " says: Woof!");37 }outputRex says: Woof!void bark()
pass 2 of 222 myDog.bark();23 myDog.bark();24 }25}2627// Class definition28class Dog {29 // Fields (instance variables)30 String name;31 String breed;32 int age;33 34 // Method35 void bark() {36 System.out.println(nameRex + " says: Woof!");37 }outputRex says: Woof!
myDog ← ⟨Dog A⟩, dogName ← Buddy, dogAge ← 1, myDog.name ← Buddy
1public class FirstClass {2 public static void main(String[] args) {3 System.out.println("=== Your First Class ===\n");4 5 // Create an object from the Dog class6 Dog myDog→ ⟨Dog A⟩ = new Dog();7 8 // Set field values9 String dogName→ Buddy = "Buddy";10 int dogAge→ 1 = 1;11 myDog.name→ Buddy = dogNameBuddy;12 myDog.breed→ Golden Retriever = "Golden Retriever";13 myDog.age→ 1 = dogAge1;14 15 // Read field values16 System.out.println("Name: " + myDog.nameBuddy);17 System.out.println("Breed: " + myDog.breedGolden Retriever);18 System.out.println("Age: " + myDog.age1);19 20 // Call methods21 System.out.println();22 myDog.bark();23 myDog.bark();output=== Your First Class === Name: Buddy Breed: Golden Retriever Age: 1void bark()
pass 1 of 221 System.out.println();22 myDog.bark();23 myDog.bark();24 }25}2627// Class definition28class Dog {29 // Fields (instance variables)30 String name;31 String breed;32 int age;33 34 // Method35 void bark() {36 System.out.println(nameBuddy + " says: Woof!");37 }outputBuddy says: Woof!void bark()
pass 2 of 222 myDog.bark();23 myDog.bark();24 }25}2627// Class definition28class Dog {29 // Fields (instance variables)30 String name;31 String breed;32 int age;33 34 // Method35 void bark() {36 System.out.println(nameBuddy + " says: Woof!");37 }outputBuddy says: Woof!
myDog ← ⟨Dog A⟩, dogName ← Buddy, dogAge ← 7, myDog.name ← Buddy
1public class FirstClass {2 public static void main(String[] args) {3 System.out.println("=== Your First Class ===\n");4 5 // Create an object from the Dog class6 Dog myDog→ ⟨Dog A⟩ = new Dog();7 8 // Set field values9 String dogName→ Buddy = "Buddy";10 int dogAge→ 7 = 7;11 myDog.name→ Buddy = dogNameBuddy;12 myDog.breed→ Golden Retriever = "Golden Retriever";13 myDog.age→ 7 = dogAge7;14 15 // Read field values16 System.out.println("Name: " + myDog.nameBuddy);17 System.out.println("Breed: " + myDog.breedGolden Retriever);18 System.out.println("Age: " + myDog.age7);19 20 // Call methods21 System.out.println();22 myDog.bark();23 myDog.bark();output=== Your First Class === Name: Buddy Breed: Golden Retriever Age: 7void bark()
pass 1 of 221 System.out.println();22 myDog.bark();23 myDog.bark();24 }25}2627// Class definition28class Dog {29 // Fields (instance variables)30 String name;31 String breed;32 int age;33 34 // Method35 void bark() {36 System.out.println(nameBuddy + " says: Woof!");37 }outputBuddy says: Woof!void bark()
pass 2 of 222 myDog.bark();23 myDog.bark();24 }25}2627// Class definition28class Dog {29 // Fields (instance variables)30 String name;31 String breed;32 int age;33 34 // Method35 void bark() {36 System.out.println(nameBuddy + " says: Woof!");37 }outputBuddy says: Woof!
A class has fields (data) and methods (behavior). Define once, create many objects.
Create objects from a class
Instantiate objects using new.
public class CreateObjects {
public static void main(String[] args) {
System.out.println("=== Creating Multiple Objects ===\n");
// Create first student
Student alice = new Student();
alice.name = "Alice";
alice.grade = 85;
// Create second student
Student bob = new Student();
bob.name = "Bob";
bob.grade = 92;
// Create third student
Student charlie = new Student();
charlie.name = "Charlie";
charlie.grade = 78;
// Display all students
System.out.println("Student Records:");
System.out.println(" " + alice.name + ": " + alice.grade);
System.out.println(" " + bob.name + ": " + bob.grade);
System.out.println(" " + charlie.name + ": " + charlie.grade);
// Each is independent
System.out.println("\nChanging Alice's grade...");
alice.grade = 90;
System.out.println("Alice: " + alice.grade);
System.out.println("Bob: " + bob.grade); // Unchanged!
System.out.println("Charlie: " + charlie.grade); // Unchanged!
}
}
class Student {
String name;
int grade;
}
alice ← ⟨Student A⟩, alice.name ← Alice, alice.grade ← 85, bob ← ⟨Student B⟩
1public class CreateObjects {2 public static void main(String[] args) {3 System.out.println("=== Creating Multiple Objects ===\n");4 5 // Create first student //?first6 Student alice→ ⟨Student A⟩ = new Student();7 alice.name→ Alice = "Alice";8 alice.grade→ 85 = 85;9 10 // Create second student //?second11 Student bob→ ⟨Student B⟩ = new Student();12 bob.name→ Bob = "Bob";13 bob.grade→ 92 = 92;14 15 // Create third student16 Student charlie→ ⟨Student C⟩ = new Student();17 charlie.name→ Charlie = "Charlie";18 charlie.grade→ 78 = 78;19 20 // Display all students //?display21 System.out.println("Student Records:");22 System.out.println(" " + alice.nameAlice + ": " + alice.grade85);23 System.out.println(" " + bob.nameBob + ": " + bob.grade92);24 System.out.println(" " + charlie.nameCharlie + ": " + charlie.grade78);25 26 // Each is independent //?independent27 System.out.println("\nChanging Alice's grade...");28 alice.grade→ 90 = 90;29 30 System.out.println("Alice: " + alice.grade90);31 System.out.println("Bob: " + bob.grade92); // Unchanged!32 System.out.println("Charlie: " + charlie.grade78); // Unchanged!33 }output=== Creating Multiple Objects === Student Records: Alice: 85 Bob: 92 Charlie: 78 Changing Alice's grade... Alice: 90 Bob: 92 Charlie: 78
new ClassName() creates an object. Each object is independent.
Access and modify fields
Read and write object data.
public class AccessFields {
public static void main(String[] args) {
System.out.println("=== Accessing Object Fields ===\n");
Book book = new Book();
// Write to fields
book.title = "1984";
book.author = "George Orwell";
book.pages = 328;
book.isAvailable = true;
// Read from fields
System.out.println("Title: " + book.title);
System.out.println("Author: " + book.author);
System.out.println("Pages: " + book.pages);
System.out.println("Available: " + book.isAvailable);
// Modify fields
System.out.println("\nBorrowing book...");
book.isAvailable = false;
System.out.println("Available: " + book.isAvailable);
// Default values before fields are assigned
System.out.println("\n=== Default Values ===");
Book emptyBook = new Book();
System.out.println("Default title: " + emptyBook.title);
System.out.println("Default pages: " + emptyBook.pages);
System.out.println("Default available: " + emptyBook.isAvailable);
}
}
class Book {
// Different field types
String title; // Reference type (default: null)
String author; // Reference type (default: null)
int pages; // Primitive (default: 0)
boolean isAvailable; // Primitive (default: false)
}
book ← ⟨Book A⟩, book.title ← 1984, book.author ← George Orwell
2public class AccessFields {3 public static void main(String[] args) {4 System.out.println("=== Accessing Object Fields ===\n");5 6 Book book→ ⟨Book A⟩ = new Book();7 8 // Write to fields //?write9 book.title→ 1984 = "1984";10 book.author→ George Orwell = "George Orwell";11 book.pages→ 328 = 328;12 book.isAvailable→ true = true;13 14 // Read from fields //?read15 System.out.println("Title: " + book.title1984);16 System.out.println("Author: " + book.authorGeorge Orwell);17 System.out.println("Pages: " + book.pages328);18 System.out.println("Available: " + book.isAvailabletrue);19 20 // Modify fields //?modify21 System.out.println("\nBorrowing book...");22 book.isAvailable→ false = false;23 System.out.println("Available: " + book.isAvailablefalse);24 25 // Default values before fields are assigned //@var=_,!26 System.out.println("\n=== Default Values ==="); //@var=_,!27 Book emptyBook→ ⟨Book B⟩ = new Book(); //?defaults28 System.out.println("Default title: " + emptyBook.titlenull); //@var=_,!29 System.out.println("Default pages: " + emptyBook.pages0); //@var=_,!30 System.out.println("Default available: " + emptyBook.isAvailablefalse); //@var=_,!31 }output=== Accessing Object Fields === Title: 1984 Author: George Orwell Pages: 328 Available: true Borrowing book... Available: false === Default Values === Default title: null Default pages: 0 Default available: false
Use dot notation: object.field to access, object.field = value to set.
Multiple instances
Each object has its own field values.
public class MultipleInstances {
public static void main(String[] args) {
System.out.println("=== Multiple Instances Demo ===\n");
// Create bank accounts
BankAccount acc1 = new BankAccount();
acc1.owner = "Alice";
acc1.balance = 1000.0;
BankAccount acc2 = new BankAccount();
acc2.owner = "Bob";
acc2.balance = 500.0;
BankAccount acc3 = new BankAccount();
acc3.owner = "Charlie";
acc3.balance = 2500.0;
// Initial state
System.out.println("Initial balances:");
printAccount(acc1);
printAccount(acc2);
printAccount(acc3);
// Operations on different accounts
System.out.println("\nTransactions:");
acc1.balance -= 200; // Alice withdraws
System.out.println("Alice withdrew $200");
acc2.balance += 100; // Bob deposits
System.out.println("Bob deposited $100");
acc3.balance -= 500; // Charlie withdraws
System.out.println("Charlie withdrew $500");
// Final state
System.out.println("\nFinal balances:");
printAccount(acc1);
printAccount(acc2);
printAccount(acc3);
// Each object maintains its own state!
System.out.println("\n=== Key Point ===");
System.out.println("Three objects, three independent balances!");
System.out.println("Same class (blueprint), different data (state).");
}
static void printAccount(BankAccount acc) {
System.out.println(" " + acc.owner + ": $" + acc.balance);
}
}
class BankAccount {
String owner;
double balance;
}
acc1 ← ⟨BankAccount A⟩, acc1.owner ← Alice, acc1.balance ← 1000.0
1public class MultipleInstances {2 public static void main(String[] args) {3 System.out.println("=== Multiple Instances Demo ===\n");4 5 // Create bank accounts //?create6 BankAccount acc1→ ⟨BankAccount A⟩ = new BankAccount();7 acc1.owner→ Alice = "Alice";8 acc1.balance→ 1000.0 = 1000.0;9 10 BankAccount acc2→ ⟨BankAccount B⟩ = new BankAccount();11 acc2.owner→ Bob = "Bob";12 acc2.balance→ 500.0 = 500.0;13 14 BankAccount acc3→ ⟨BankAccount C⟩ = new BankAccount();15 acc3.owner→ Charlie = "Charlie";16 acc3.balance→ 2500.0 = 2500.0;17 18 // Initial state19 System.out.println("Initial balances:");20 printAccount(acc1⟨BankAccount A⟩);21 printAccount(acc2);output=== Multiple Instances Demo === Initial balances:static void printAccount(BankAccount acc)
pass 1 of 619 System.out.println("Initial balances:");20 printAccount(acc1⟨BankAccount A⟩);21 printAccount(acc2⟨BankAccount B⟩);22 printAccount(acc3);23 24 // Operations on different accounts //?operations25 System.out.println("\nTransactions:");26 acc1.balance -= 200; // Alice withdraws27 System.out.println("Alice withdrew $200");28 29 acc2.balance += 100; // Bob deposits30 System.out.println("Bob deposited $100");31 32 acc3.balance -= 500; // Charlie withdraws33 System.out.println("Charlie withdrew $500");34 35 // Final state //?final36 System.out.println("\nFinal balances:");37 printAccount(acc1);38 printAccount(acc2);39 printAccount(acc3);40 41 // Each object maintains its own state! //?state42 System.out.println("\n=== Key Point ===");43 System.out.println("Three objects, three independent balances!");44 System.out.println("Same class (blueprint), different data (state).");45}4647static void printAccount(BankAccount acc⟨BankAccount A⟩) {48 System.out.println(" " + acc.ownerAlice + ": $" + acc.balance1000.0);49}output Alice: $1000.0All 6 passes — pass 1 is the card above pass accacc.owneracc.balanceacc1acc2acc3acc1.balanceacc2.balanceacc3.balance1 ⟨BankAccount A⟩ Alice 1000.0 ⟨BankAccount A⟩ ⟨BankAccount B⟩ — — — — 2 ⟨BankAccount B⟩ Bob 500.0 — ⟨BankAccount B⟩ ⟨BankAccount C⟩ — — — 3 ⟨BankAccount C⟩ Charlie 2500.0 ⟨BankAccount A⟩ ⟨BankAccount B⟩ ⟨BankAccount C⟩ 1000.0 → 800.0 500.0 → 600.0 2500.0 → 2000.0 4 ⟨BankAccount A⟩ Alice 800.0 ⟨BankAccount A⟩ ⟨BankAccount B⟩ — — — — 5 ⟨BankAccount B⟩ Bob 600.0 — ⟨BankAccount B⟩ ⟨BankAccount C⟩ — — — 6 ⟨BankAccount C⟩ Charlie 2000.0 — — ⟨BankAccount C⟩ — — —
Changes to one object don't affect others. Each has its own memory.
Methods that use object data
Methods can read and modify the object's fields.
public class ClassWithMethods {
public static void main(String[] args) {
System.out.println("=== Class with Methods ===\n");
Counter counter = new Counter();
counter.display(); // Shows 0 (default)
counter.increment();
counter.increment();
counter.increment();
counter.display(); // Shows 3
counter.decrement();
counter.display(); // Shows 2
counter.reset();
counter.display(); // Shows 0
System.out.println("\n=== Two Independent Counters ===");
Counter counterA = new Counter();
Counter counterB = new Counter();
counterA.increment();
counterA.increment();
counterA.increment();
counterA.increment();
counterA.increment();
counterB.increment();
counterB.increment();
System.out.println("Counter A: " + counterA.getValue());
System.out.println("Counter B: " + counterB.getValue());
}
}
class Counter {
int count = 0; // Field with initial value
void increment() {
count++;
}
void decrement() {
if (count > 0) {
count--;
}
}
void reset() {
count = 0;
}
int getValue() {
return count;
}
void display() {
System.out.println("Count: " + count);
}
}
counter ← ⟨Counter A⟩
1public class ClassWithMethods {2 public static void main(String[] args) {3 System.out.println("=== Class with Methods ===\n");4 5 Counter counter→ ⟨Counter A⟩ = new Counter(); //?createcounter6 7 counter.display(); // Shows 0 (default)output=== Class with Methods ===void display()
pass 1 of 47 counter.display(); // Shows 0 (default)8 9 counter.increment(); //?callmethod10 counter.increment();11 counter.increment();12 counter.display(); // Shows 313 14 counter.decrement();15 counter.display(); // Shows 216 17 counter.reset(); //?reset18 counter.display(); // Shows 019 20 System.out.println("\n=== Two Independent Counters ==="); //?independent21 Counter counterA = new Counter();22 Counter counterB = new Counter();23 24 counterA.increment();25 counterA.increment();26 counterA.increment();27 counterA.increment();28 counterA.increment();29 30 counterB.increment();31 counterB.increment();32 33 System.out.println("Counter A: " + counterA.getValue());34 System.out.println("Counter B: " + counterB.getValue());35 }36}3738class Counter {39 int count = 0; // Field with initial value //?field40 41 void increment() { //?methoddef42 count++;43 }44 45 void decrement() {46 if (count > 0) {47 count--;48 }49 }50 51 void reset() {52 count = 0;53 }54 55 int getValue() { //?getter56 return count;57 }58 59 void display() {60 System.out.println("Count: " + count0);61 }outputCount: 0All 4 passes — pass 1 is the card above pass countcounterAcounterB1 0 — — 2 3 → 2 — — 3 0 — — 4 0 ⟨Counter B⟩ ⟨Counter C⟩ count ← 1
pass 1 of 109 counter.increment(); //?callmethod10 counter.increment();11 counter.increment();12 counter.display(); // Shows 313 14 counter.decrement();15 counter.display(); // Shows 216 17 counter.reset(); //?reset18 counter.display(); // Shows 019 20 System.out.println("\n=== Two Independent Counters ==="); //?independent21 Counter counterA = new Counter();22 Counter counterB = new Counter();23 24 counterA.increment();25 counterA.increment();26 counterA.increment();27 counterA.increment();28 counterA.increment();29 30 counterB.increment();31 counterB.increment();32 33 System.out.println("Counter A: " + counterA.getValue());34 System.out.println("Counter B: " + counterB.getValue());35 }36}3738class Counter {39 int count = 0; // Field with initial value //?field40 41 void increment() { //?methoddef42 count→ 1++;43 }All 10 passes — pass 1 is the card above pass count1 0 → 1 2 1 → 2 3 2 → 3 4 0 → 1 5 1 → 2 6 2 → 3 7 3 → 4 8 4 → 5 9 0 → 1 10 1 → 2 count ← 2
14 counter.decrement();15 counter.display(); // Shows 216 17 counter.reset(); //?reset18 counter.display(); // Shows 019 20 System.out.println("\n=== Two Independent Counters ==="); //?independent21 Counter counterA = new Counter();22 Counter counterB = new Counter();23 24 counterA.increment();25 counterA.increment();26 counterA.increment();27 counterA.increment();28 counterA.increment();29 30 counterB.increment();31 counterB.increment();32 33 System.out.println("Counter A: " + counterA.getValue());34 System.out.println("Counter B: " + counterB.getValue());35 }36}3738class Counter {39 int count = 0; // Field with initial value //?field40 41 void increment() { //?methoddef42 count++;43 }44 45 void decrement() {46 if (count3 > 0) {47 count→ 2--;48 }count ← 0
17 counter.reset(); //?reset18 counter.display(); // Shows 019 20 System.out.println("\n=== Two Independent Counters ==="); //?independent21 Counter counterA = new Counter();22 Counter counterB = new Counter();23 24 counterA.increment();25 counterA.increment();26 counterA.increment();27 counterA.increment();28 counterA.increment();29 30 counterB.increment();31 counterB.increment();32 33 System.out.println("Counter A: " + counterA.getValue());34 System.out.println("Counter B: " + counterB.getValue());35 }36}3738class Counter {39 int count = 0; // Field with initial value //?field40 41 void increment() { //?methoddef42 count++;43 }44 45 void decrement() {46 if (count > 0) {47 count--;48 }49 }50 51 void reset() {52 count→ 0 = 0;53 }int getValue()
pass 1 of 255int getValue() { //?getter56 return count5;57}System.out.println("Counter A: " + counterA.getValue());
33 System.out.println("Counter A: " + counterA.getValue());34 System.out.println("Counter B: " + counterB.getValue());35}outputCounter A: 5int getValue()
pass 2 of 255int getValue() { //?getter56 return count2;57}System.out.println("Counter B: " + counterB.getValue());
33 System.out.println("Counter A: " + counterA.getValue());34 System.out.println("Counter B: " + counterB.getValue());35}outputCounter B: 2
Methods operate on this object's data. this is implicit.
Exercise: PointRectangle.java
Create Point and Rectangle classes that work together