Java 三个核心特征:封装、继承和多态

Java的三个核心特征

Java面向对象的三个核心特征是 封装、继承和多态 。它们是面向对象编程(OOP)的基石,共同构成了Java语言强大的面向对象特性。在日常的编码过程中,这三个核心特征也能体现一个开发者的基本功。

1、封装(Encapsulation)

封装是指将对象的属性(数据)和行为(方法)结合成一个独立的单位(即类),并通过 访问权限控制(如private、public、protected等)来隐藏对象的内部实现细节,仅通过定义好的接口(方法)与外界交互。
特点:

  • 隐藏内部实现:将类的内部数据和实现细节隐藏起来,只暴露必要的接口给外部使用。例如,将类的成员变量设置为 private ,通过 publicgettersetter 方法来访问和修改这些变量。
  • 数据安全:防止外部代码对内部数据的直接访问和修改,避免数据被破坏或误用。例如,通过 setter 方法可以对数据进行合法性校验。
  • 简化接口:用户只需要关注类提供的接口,而不需要了解内部的复杂实现,降低了系统的复杂性。
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) {
        if (age > 0) { // 数据校验
            this.age = age;
        } else {
            System.out.println("年龄不能为负数!");
        }
    }
}

2、继承(Inheritance)

继承是指一个类(子类)可以继承另一个类(父类)的属性和方法。子类继承父类后,会自动拥有父类的所有非私有成员变量和方法,并且可以添加新的属性和方法或覆盖父类的方法。
特点:

  • 代码复用:子类可以直接使用父类的属性和方法,减少代码冗余,提高开发效率。
  • 层次结构:通过继承可以形成类的层次结构,更好地模拟现实世界中的关系。例如,Animal 类可以作为 DogCat 的父类。
  • 扩展性:子类可以在继承的基础上扩展新的功能或修改父类的行为,增强系统的灵活性。
// 父类
class Animal {
    public void eat() {
        System.out.println("动物会吃东西");
    }
}

// 子类
class Dog extends Animal {
    public void bark() {
        System.out.println("狗会叫");
    }
}

// 测试
public class TestInheritance {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat(); // 继承自父类Animal的方法
        dog.bark(); // 子类Dog自己的方法
    }
}

3、多态(Polymorphism)

多态是指同一个接口或父类使用不同的底层实现,调用时可以根据对象的实际类型动态地决定调用哪个方法。多态分为编译时多态(方法重载)和运行时多态(方法覆盖)。
特点:

  • 运行时绑定:运行时多态(方法覆盖)是多态的核心。通过父类引用指向子类对象,调用方法时会根据对象的实际类型动态绑定到具体的方法。
  • 提高灵活性:允许使用统一的接口调用不同的实现,使得代码更加通用和灵活。
  • 增强扩展性:新增子类时,无需修改原有代码,只需继承父类并覆盖方法,即可实现新的功能。
// 父类
class Animal {
    public void makeSound() {
        System.out.println("动物发出声音");
    }
}

// 子类1
class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("狗叫:汪汪");
    }
}

// 子类2
class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("猫叫:喵喵");
    }
}

// 测试
public class TestPolymorphism {
    public static void main(String[] args) {
        Animal animal1 = new Dog();
        animal1.makeSound(); // 输出:狗叫:汪汪

        Animal animal2 = new Cat();
        animal2.makeSound(); // 输出:猫叫:喵喵
    }
}

总结:

  • 封装:隐藏内部实现,提供接口,保护数据安全。
  • 继承:实现代码复用,形成层次结构,增强扩展性。
  • 多态:通过运行时绑定实现动态调用,提高灵活性和扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值