Intro/Review

What Are Classes in Java?

Definition: A class is a blueprint for creating objects. It encapsulates data (fields) and behaviors (methods).

  1. Why Are Classes Important?
    • Organize code into reusable, modular units.
    • Support Object-Oriented Programming (OOP) principles:
    • Encapsulation: Keep data safe by hiding it.
    • Abstraction: Simplify complex systems.
    • Inheritance: Reuse code.
    • Polymorphism: Make programs more flexible and scalable.
  2. Components of a Class
    • Fields (Attributes): Variables that represent the state of the object.
    • Methods: Functions that define the object’s behavior.
    • Constructors: Special methods to initialize objects.
    • Access Modifiers: Define how fields and methods can be accessed (private, public, protected).
      • Levels of Access:
    • private: Accessible only within the class.
    • public: Accessible anywhere.
    • protected: Accessible within the package and subclasses.
    • Default (no modifier): Accessible within the package.
public class Book {
    // Private Fields (encapsulation)
    private String title;
    private String author;
    private int pages;

    // Constructor
    public Book(String title, String author, int pages) {
        this.title = title;
        this.author = author;
        this.pages = pages;
    }

    // Accessor Methods (Getters)
    public String getTitle() {
        return title;
    }

    public String getAuthor() {
        return author;
    }

    // Mutator Methods (Setters)
    public void setPages(int pages) {
        if (pages > 0) {
            this.pages = pages;
        } else {
            System.out.println("Invalid page count.");
        }
    }

    // Method
    public void displayInfo() {
        System.out.println("Book: " + title + " by " + author + ", Pages: " + pages);
    }
}

Object Oriented Programming Principles

  • encapsulate: Keep fields private, provide controlled access using getters and setters (ex. book class)
  • Inheritance: Allow a new class (subclass) to inherit from an existing class (superclass)
  • Polymorphism: The ability to use the same method name in different contexts.
    • Method Overloading: Same method name, different parameter lists.
    • Method Overriding: Subclass provides a specific implementation of a method from the superclass.

During the Exam

  • Constructors: initialize objects
  • Static Variables
    • Not always given, will need to identify on your own
  • Methods:
    • Names given, code is task. Methods team teach applies here
  • Levels of Access:
    • Will lose points, do not mess up