Java面向对象编程(OOP)主要通过以下四个特性来实现:
- 封装(Encapsulation):封装是将对象的状态(数据)和行为(方法)包装在一个类中的过程。这样可以隐藏类的内部实现细节,只暴露必要的接口给外部访问。封装可以通过使用访问修饰符(如private、public、protected)来实现。
public class Person { private String name; private int age; 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; } }
- 继承(Inheritance):继承允许一个类继承另一个类的属性和方法。这样可以复用代码,减少重复,并提高代码的可维护性。继承使用关键字
extends
来实现。
public class Student extends Person { private String school; public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } }
- 多态(Polymorphism):多态是指允许不同类的对象对同一消息作出响应。这意味着可以使用相同的接口来表示不同类型的对象,从而提高代码的灵活性和可扩展性。多态可以通过接口和抽象类来实现。
public interface Animal { void makeSound(); } public class Dog implements Animal { @Override public void makeSound() { System.out.println("Woof!"); } } public class Cat implements Animal { @Override public void makeSound() { System.out.println("Meow!"); } } public class Main { public static void main(String[] args) { Animal myAnimal = new Dog(); myAnimal.makeSound(); // 输出 "Woof!" myAnimal = new Cat(); myAnimal.makeSound(); // 输出 "Meow!" } }
- 抽象(Abstraction):抽象是指隐藏复杂性,只展示给用户最基本的功能。抽象可以通过抽象类来实现,抽象类是不能被实例化的类,只能被其他类继承。抽象类中可以包含抽象方法和非抽象方法。
public abstract class Shape { private double x; private double y; public Shape(double x, double y) { this.x = x; this.y = y; } public abstract double area(); public abstract double perimeter(); } public class Circle extends Shape { private double radius; public Circle(double x, double y, double radius) { super(x, y); this.radius = radius; } @Override public double area() { return Math.PI * radius * radius; } @Override public double perimeter() { return 2 * Math.PI * radius; } } public class Rectangle extends Shape { private double width; private double height; public Rectangle(double x, double y, double width, double height) { super(x, y); this.width = width; this.height = height; } @Override public double area() { return width * height; } @Override public double perimeter() { return 2 * (width + height); } }
通过以上四个特性,Java面向对象编程可以实现代码的模块化、复用、扩展和维护。