-
1、封装
在Java中,封装(Encapsulation)是一种基本且重要的面向对象编程(OOP)概念,它指的是将对象的状态(属性)和行为(方法)捆绑在一起,形成一个独立的对象,并通过控制这些状态的访问权限来隐藏对象的细节。封装通过以下方式实现:
访问修饰符:Java提供了四种访问控制修饰符(
private,protected,public, 和默认(包访问权限)),这些修饰符可以用来控制类、变量、方法和构造器的访问级别。Getter和Setter方法:通常,我们会使用
private修饰符来隐藏对象的属性,并通过public的getter和setter方法来控制对这些属性的访问和修改。
示例
下面是一个简单的Java类示例,展示了如何使用封装:

封装的好处:
提高安全性:通过限制对成员变量的直接访问,可以防止外部代码随意修改对象的状态,从而提高代码的安全性。
提高代码的可维护性:封装使得你可以在不修改现有代码的情况下,通过修改访问器方法(getter和setter)来改变内部实现。
简化设计:封装使得你可以只暴露必要的接口,隐藏不必要的细节,从而使得类的设计更加清晰和简洁。
便于调试:封装使得你可以在不影响外部代码的情况下,单独测试和调试类的内部实现。
通过以上方式,Java中的封装不仅有助于构建更安全、更易于维护和理解的代码,同时也增强了代码的模块化和复用性。
-
2、继承
在Java中,继承是一种面向对象编程的核心特性,它允许我们创建一个新类(称为子类或派生类)基于一个或多个已存在的类(称为父类或基类)。通过继承,子类可以继承父类的属性和方法,并且可以添加新的属性和方法,或者重写(override)父类的方法。这种机制促进了代码的重用和扩展。
继承的基本语法
在Java中,使用
extends关键字来创建一个子类继承自一个父类。
继承的特点
代码重用:子类可以继承父类的属性和方法,减少了代码的重复。
多态性:通过继承,可以创建不同类型的对象,这些对象可以通过同一个接口引用调用,增加了程序的灵活性。
扩展性:子类可以添加新的属性和方法,或者重写父类的方法以改变其功能。
继承的限制
单一继承:Java不支持多重继承(一个子类继承多个父类),但是支持接口的多重实现。
访问控制:子类可以访问父类的public和protected成员,但不能访问private成员。
构造函数:子类的构造函数不会自动调用父类的构造函数,需要显式调用(使用
super关键字)。
示例

在这个例子中,
Dog类继承了Animal类,因此Dog对象可以使用eat()方法。同时,Dog类还定义了它自己的bark()方法。这展示了如何在Java中使用继承来扩展类的功能 -
3、多态
Java 中的多态性(Polymorphism)是面向对象编程(OOP)的一个核心概念,它允许我们通过相同的接口以不同的方式处理不同类型的数据对象。多态性主要有两种形式:编译时多态(方法重载)和运行时多态(方法重写)。
1. 编译时多态(方法重载)
方法重载发生在编译时,即编译器根据方法名称和参数列表的不同来区分不同的方法。这是通过相同的类中具有相同名称但参数列表不同的方法来实现的。

2. 运行时多态(方法重写)
方法重写发生在运行时,即当子类继承父类时,子类可以提供父类方法的特定实现。这是通过子类覆盖父类的方法来实现的。

实现多态的关键点:
继承:子类继承父类的属性和方法。
方法重写:子类提供父类方法的特定实现。
向上转型:父类的引用变量可以指向子类的对象。
动态绑定:在运行时,根据对象的实际类型调用相应的方法。
多态性使得程序更加灵活和可扩展,允许我们编写更加通用和可复用的代码。通过使用接口和抽象类,可以进一步增强多态性的应用,使得不同类型的对象能够以统一的方式被处理。例如:

在这个例子中,
Dog和Cat类都实现了Animal接口,并提供了eat方法的具体实现。这样,无论Animal的引用指向Dog还是Cat的实例,都可以调用eat方法,表现出不同的行为,体现了多态性的优势。
关闭