具体实现
封装通过访问控制修饰符实现,常用的修饰符包括`private`、`default`、`protected`、`public`。将类的属性设为`private`私有化,仅允许类内部访问;通过`public`的 getter/setter 方法对外暴露属性的读取和修改,同时可在方法中加入逻辑校验。 示例: ```java class Student { private String name; // 私有属性,外部法直接访问 private int age;// 公共getter方法,提供属性读取 public String getName() { return name; }
// 公共setter方法,提供属性修改并加入逻辑校验 public void setAge(int age) { if (age < 0 || age > 150) { throw new IllegalArgumentException("年龄不合法"); } this.age = age; } } ```
二、继承:代码复用与功能扩展 继承允许一个类子类继承另一个类父类的属性和方法,从而实现代码复用,并可在子类中扩展或重写父类功能。继承体现了“is-a”的关系,如“Dog is an Animal”。具体实现
Java通过`extends`关键字实现单继承一个子类只能有一个直接父类,子类会继承父类中`public`和`protected`修饰的成员,`private`成员不可继承。子类可通过`@Override`重写父类方法,使用`super`关键字调用父类的构造器或成员方法。 示例: ```java // 父类 class Animal { public void eat() { System.out.println("动物进食"); } }// 子类继承父类 class Dog extends Animal { // 重写父类方法,扩展功能 @Override public void eat() { super.eat(); // 调用父类方法 System.out.println("狗吃骨头"); }
// 子类新增方法 public void bark() { System.out.println("狗吠"); } } ```
三、多态:灵活调用与动态绑定 多态指同一操作作用于不同对象时,产生不同的执行结果。其核心是“父类引用指向子类对象”,使代码在编译时不确定具体类型,运行时动态绑定到实际对象的方法。具体实现
多态实现需满足三个条件:子类继承父类、子类重写父类方法、父类引用指向子类对象。通过这种方式,调用方法时会优先执行子类重写的逻辑。 示例: ```java // 父类引用指向子类对象 Animal animal = new Dog(); animal.eat(); // 运行时调用Dog的eat(),输出"动物进食 狗吃骨头"// 多态数组:同一数组可存放不同子类对象 Animal[] animals = {new Dog(), new Cat()}; for (Animal a : animals) { a.eat(); // 分别调用Dog和Cat的eat() } ```
三大特性共同构成Java面向对象的基石:封装确保数据安全,继承实现代码复用,多态提升代码灵活性。理并合理应用这些特性,是编写高质量Java程序的核心能力。
