Java面向对象编程(OOP,Object-Oriented Programming)有三大特征:
1、封装(Encapsulation)
封装是隐藏对象的属性和实现细节,仅对外提供公共访问方式。
通过封装,可以控制对类内部状态的访问,从而提高数据的安全性。
Java中通过类(Class)和访问修饰符(public、private、protected)来实现封装。
public class Person {
private String name; // 私有属性,不能被外界直接访问
private int age;
// 构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 公共的getter和setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2、继承(Inheritance)
继承允许我们定义一个通用的类,成为父类或基类(Superclass),然后创建继承自该类的子类(Subclass)。
子类会继承父类的所有非私有属性和方法,并且可以添加或覆盖父类的方法。
Java中通过extends关键字实现继承。
public class Person {
// ... 省略属性和方法 ...
}
public class Student extends Person { // 继承自Person类
private String studentId;
public Student(String name, int age, String studentId) {
super(name, age); // 调用父类的构造方法
this.studentId = studentId;
}
// ... 可以添加或覆盖父类的方法 ...
public String getStudentId() {
return studentId;
}
public void setStudentId(String studentId) {
this.studentId = studentId;
}
}
3、多态(Polymorphism)
多态意味着相同的操作或方法名在不同的对象上可以有不同的行为。
在Java中,多态可以通过方法重载(Overloading)和方法重写(Overriding)来实现。
方法重载是在同一个类中定义多个同名但参数列表不同的方法。
方法重写是子类提供一个与父类相同名称、相同参数列表和相同返回类型的方法,但实现可能不同。
在运行是,多态允许我们通过父类引用调用子类对象的方法。
public class Animal {
public void makeSound() {
System.out.println("The animal makes a sound");
}
}
public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("The dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // 父类引用指向子类对象
myDog.makeSound(); // 输出 "The dog barks",展示了多态性
}
}