三大特性
Java的三大特性是面向对象编程(OOP)的核心概念,分别是封装、继承和多态。这些特性使得Java代码更加模块化、可重用和易于维护。
封装(Encapsulation)
封装是指将对象的属性和行为(方法)包装在一起,并隐藏内部实现细节,仅通过公共接口与外界交互。封装的主要目的是保护数据,防止外部直接访问或修改对象的内部状态。
- 访问控制:通过private、protected、public等访问修饰符来控制类成员的可见性。
- 数据隐藏:将类的属性设为private,并通过getter和setter方法来访问和修改这些属性。
- 优点:提高代码的安全性、可维护性和灵活性。
示例代码
public class Person {
private String name; // 私有属性,外部无法直接访问
// 公共的getter方法
public String getName() {
return name;
}
// 公共的setter方法
public void setName(String name) {
this.name = name;
}
}
继承(Inheritance)
继承是指一个类(子类)可以继承另一个类(父类)的属性和方法,并可以在子类中添加新的属性和方法,或者重写父类的方法。继承的主要目的是实现代码的重用和扩展。
- 单继承:Java支持单继承,即一个类只能有一个直接父类。
- 方法重写:子类可以重写父类的方法,以提供不同的实现。
- super关键字:用于调用父类的构造方法或方法。
- 优点:减少代码冗余,提高代码的可维护性和扩展性。
class Animal {
void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Dog is barking");
}
@Override
void eat() {
System.out.println("Dog is eating");
}
}
多态(Polymorphism)
多态是指同一个方法在不同对象中有不同的表现形式。多态分为编译时多态(方法重载)和运行时多态(方法重写)。
- 方法重载:在同一个类中,方法名相同但参数列表不同。
- 方法重写:子类重写父类的方法,调用时根据对象的实际类型决定执行哪个方法。
- 向上转型:父类引用指向子类对象。
- 优点:提高代码的灵活性和可扩展性。
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 myAnimal = new Animal(); // Animal对象
Animal myDog = new Dog(); // Dog对象
Animal myCat = new Cat(); // Cat对象
myAnimal.sound(); // 输出: Animal makes a sound
myDog.sound(); // 输出: Dog barks
myCat.sound(); // 输出: Cat meows
}
}
总结
- 封装:隐藏内部实现,提供公共接口。
- 继承:实现代码重用和扩展。
- 多态:同一方法在不同对象中有不同表现。