第24题:Java面向对象有哪些特征
📚 回答:
- 核心特征 :
Java面向对象有三大特征:封装 、继承 和多态。
1. 封装
-
定义 :
封装是将对象的属性和行为隐藏起来,只对外提供访问接口。简单来说,就是"把复杂的事情藏起来,只暴露简单的使用方式"。
-
实现方式:
- 使用
private修饰符隐藏类的属性或方法。 - 提供
public的getter和setter方法来访问这些属性。
- 使用
-
好处:
- 提高代码的安全性:外部无法直接修改内部数据。
- 提升代码的可维护性:修改内部实现不会影响外部调用者。
💡 代码示例 :
以下代码展示了封装的基本实现:
java
class Person {
private String name; // 隐藏属性
private int age;
// 提供公共访问接口
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2. 继承
-
定义 :
继承是指一个类(子类)可以复用另一个类(父类)的功能,并在此基础上扩展新的功能。
-
实现方式 :
使用
extends关键字实现继承关系。 -
好处:
- 减少重复代码:子类可以直接复用父类的属性和方法。
- 提高代码的扩展性:子类可以在不修改父类的情况下添加新功能。
💡 代码示例 :
以下代码展示了继承的基本实现:
java
class Animal {
void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Dog is barking");
}
}
3. 多态
-
定义 :
多态是指同一个方法在不同对象中表现出不同的行为。它的三个要素是:继承 、重写 和父类引用指向子类对象。
-
实现方式:
- 子类重写父类的方法。
- 使用父类引用指向子类对象,调用方法时执行的是子类的实现。
-
好处:
- 提高代码的灵活性:同样的方法调用可以根据具体对象表现出不同的行为。
- 实现"开闭原则":对扩展开放,对修改关闭。
💡 代码示例 :
以下代码展示了多态的基本实现:
java
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Dog barks");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("Cat meows");
}
}
// 测试多态
public class Main {
public static void main(String[] args) {
Animal animal1 = new Dog(); // 父类引用指向子类对象
Animal animal2 = new Cat();
animal1.sound(); // 输出 "Dog barks"
animal2.sound(); // 输出 "Cat meows"
}
}
💡 面试官视角:
- 面试官可能会问"多态的应用场景是什么?"答:比如工厂模式、策略模式等设计模式都依赖多态实现灵活扩展。
- 面试官可能会追问"为什么需要重写?"答:重写是为了让子类能够根据自身需求重新定义父类的行为,从而实现多态。
📌 专栏 :大白话说Java面试题 --- 01-Java基础篇