Java封装、继承与多态理解

需积分: 0 0 下载量 92 浏览量 更新于2024-08-16 收藏 639KB PPT 举报
"Java核心逻辑第2章-多态的概念实例" 在Java编程语言中,多态性(Polymorphism)是面向对象编程的三大基本特性之一,与封装和继承并列。本章主要探讨了封装、继承以及多态的概念,并通过具体的代码示例进行了深入的解释。 首先,多态是指一个接口可以有多种不同的形态或表现形式。在Java中,只有实例方法具有多态性,静态方法、实例变量和静态变量都不具备这一特性。例如,我们有一个`Father`类,它包含一个实例变量、一个静态变量、一个实例方法和一个静态方法。当我们创建`Father`类的子类并重写其实例方法时,便展示了多态性。 ```java public class Son extends Father { @Override public void instanceMethod() { System.out.println("Son 实例方法"); } } ``` 在这个例子中,`Son`类继承了`Father`类,并重写了`instanceMethod()`。当我们通过父类引用调用这个方法时,实际执行的是子类的实现,这就是多态性: ```java Father father = new Son(); father.instanceMethod(); // 输出 "Son 实例方法" ``` 多态的好处在于代码的灵活性和可扩展性。它允许我们设计通用的代码,而无需关心具体对象的类型。例如,在处理集合中的对象时,我们可以定义一个父类类型的引用,然后存储不同子类的对象,这样在遍历集合时,就可以通过父类引用调用子类的方法,实现了多态调用。 ```java List<Father> family = new ArrayList<>(); family.add(new Father()); family.add(new Son()); for (Father member : family) { member.instanceMethod(); } ``` 封装是面向对象的另一个重要概念,它涉及如何管理类的数据和行为。封装的基本思想是将数据和操作数据的方法绑定在一起,作为一个相互依赖的整体——即对象。通过封装,我们可以保护类的内部状态,只允许通过特定的方法(getter和setter)来访问和修改这些状态,这有助于防止外部代码直接篡改对象的内部信息,提高代码的安全性和可维护性。 例如,`CreditCard` 类的 `password` 属性最初是公共的,这意味着任何代码都可以直接访问和修改密码。为了实现封装,我们将 `password` 的访问权限改为私有(`private`),并提供公共的 `getPassword` 和 `setPassword` 方法,使得外部代码只能通过这些方法来操作密码: ```java public class CreditCard { private String password; private double money; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ``` 封装的好处包括: 1. 数据安全:隐藏类的实现细节,防止外部直接修改。 2. 易于维护:如果需要改变数据的处理方式,只需要修改相关方法,不影响其他代码。 3. 控制访问:可以通过方法添加逻辑检查,如密码验证。 此外,本章还提到了继承(使用 `extends` 关键字)、方法的覆盖(Override)以及访问修饰符(如 `public`, `private`, `protected` 和默认访问级别)等概念。继承允许子类继承父类的属性和方法,方法的覆盖用于子类重写父类的方法实现,而访问修饰符则控制类的成员对外部世界的可见性。 最后,`super` 关键字用于在子类中访问父类的成员,`instanceof` 关键字用来检测一个对象是否属于某个类或其子类,这些都是在多态场景下常用的工具。 封装、继承和多态是Java面向对象编程的核心,它们共同构成了强大的设计和实现机制,帮助开发者构建出灵活、安全且易于维护的软件系统。