Java基础四:面向对象、继承、多态

170 阅读3分钟

Java是一种面向对象的编程语言,它支持面向对象的三大基本特性:封装、继承和多态

1. 面向对象(Object-Oriented Programming, OOP)

将数据(即对象的属性)和操作这些数据的方法(即对象的行为)绑定在一起,形成一个整体(即对象)。 以下是一些常见的使用场景:

  • 模型(Model)层: 在MVC(Model-View-Controller)或MVVM(Model-View-ViewModel)等架构模式中, 模型层通常使用面向对象的方式来表示数据和业务逻辑。每个模型类都是一个对象,具有自己的属性和方法。
  • 组件化开发: Android应用中的Activity、Fragment、Service等组件都是面向对象的体现。 它们都有自己的生命周期、属性和方法,通过对象之间的交互来实现功能。
  • 自定义控件: 在Android开发中,经常需要自定义控件来满足特定的UI需求。 自定义控件时,可以通过继承现有的控件类并添加新的属性和方法来实现。

2. 继承(Inheritance)

允许我们定义一个类(子类)来继承另一个类(父类)的属性和方法。(Java不支持多继承) 继承的主要目的是代码复用。 通过继承,子类可以继承父类的属性和方法(public、protected),或添加新的属性和方法或覆盖(Override)父类的方法。

继承的使用场景包括:

  • 扩展现有类: 当需要创建一个类,而这个类与现有的某个类非常相似,只是需要添加一些额外的属性或方法时, 可以通过继承现有的类来快速实现。 例如,可以创建一个CustomTextView类来继承TextView类,并添加一些自定义的属性和方法。
  • 实现接口回调: 虽然这不是继承的直接应用,但在Android中,经常通过实现接口(Interface)的回调方法来处理异步事件或用户交互。 接口继承(Interface Inheritance)允许我们定义一个接口,并让多个类去实现这个接口。

3. 多态(Polymorphism)

允许一个接口被多个不同的类实现,或者一个类具有多个不同的形态。使用场景包括:

  • 方法重写(Overriding): 子类可以重写父类中的方法,使得子类对象在调用该方法时执行的是子类定义的方法。 这是多态性的一种体现,它允许我们在不修改现有代码的情况下,通过替换子类来改变程序的行为。
  • 接口实现: 比如View.OnClickListenerAdapter等。 不同的类可以实现同一个接口,并在实现时提供不同的实现逻辑。这样,在调用接口方法时,就可以表现出不同的行为。
  • 泛型(Generics): 虽然泛型不是多态的直接体现,但它与多态密切相关。泛型允许我们在编写代码时指定类、接口、方法 或构造函数的类型参数。通过泛型,我们可以编写更加灵活、可重用的代码,同时保持类型安全。 在Android开发中,泛型经常用于集合框架(如ListMap等)中,以提高代码的可读性和可维护性。

综上所述,面向对象、继承和多态在Android开发中的应用非常广泛。它们不仅帮助我们构建出结构清晰、易于维护的代码,还提高了应用程序的灵活性和可扩展性。