三十天搞定Java面试-面向对象编程(OOP)

99 阅读2分钟

面向对象编程(OOP)是软件开发中的核心概念,它通过将数据和行为封装在对象中来模拟现实世界实体。本篇博文将深入探讨OOP的关键元素,并提供面试中可能遇到的真题及代码示例。

类和对象的概念

是创建对象的模板,定义了对象的属性和方法。对象是类的实例。

真题示例

如何定义一个类并在Java中创建对象?

代码示例

// 定义一个类Person
class Person {
    String name;
    int age;

    // 构造函数
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 显示个人信息的方法
    public void displayInfo() {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

// 创建Person对象
public class Main {
    public static void main(String[] args) {
        Person person = new Person("Alice", 30);
        person.displayInfo();
    }
}

继承、封装和多态

继承允许新类(子类)继承现有类(父类)的属性和方法。封装隐藏对象的内部状态和实现细节。多态允许对象对不同类的对象使用相同的接口。

真题示例

解释Java中的多态性,并给出示例。

代码示例

// 父类Animal
class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

// 子类Dog继承自Animal
class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Dog();
        myAnimal.sound(); // 多态的体现,输出: Dog barks
    }
}

访问修饰符

访问修饰符控制对类成员的访问级别,包括publicprotectedprivatedefault(包级私有)。

真题示例

Java中有哪些访问修饰符,并简述它们的区别。

代码示例

class Account {
    private double balance; // 只有Account类可以访问

    public void deposit(double amount) {
        balance += amount;
    }

    public double getBalance() {
        return balance;
    }
}

// 其他类无法直接访问balance属性

构造函数和方法重载

构造函数是用于创建对象的函数,与类名相同,没有返回类型。方法重载允许在同一类中定义多个同名方法,只要它们的参数列表不同。

真题示例

在Java中,如何使用构造函数和方法重载?

代码示例

class Car {
    private String model;
    private int year;

    // 无参构造函数
    public Car() {
        this("Default Model", 2021); // 调用带参构造函数
    }

    // 带参构造函数
    public Car(String model, int year) {
        this.model = model;
        this.year = year;
    }

    // 方法重载
    public void start() {
        System.out.println(model + " starts");
    }

    public void start(int year) {
        System.out.println(model + " (" + year + " model) starts");
    }
}

public class Main {
    public static void main(String[] args) {
        Car car1 = new Car();
        car1.start(); // 输出: Default Model starts

        Car car2 = new Car("Tesla", 2023);
        car2.start(2023); // 输出: Tesla (2023 model) starts
    }
}

通过上述真题和代码示例,我们可以看到OOP在Java中的广泛应用。理解类和对象、继承、封装、多态、访问修饰符、构造函数和方法重载是掌握OOP的关键。这些概念不仅在面试中经常出现,而且在实际开发中也是必不可少的。希望本篇博文能帮助你更好地准备面试,加深对OOP的理解