Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第三章:面向对象编程

第三章:面向对象编程

3.4 继承与多态

3.4.1 继承的基本概念

继承是面向对象编程的三大特性之一(封装、继承、多态),它允许一个类(子类/派生类)继承另一个类(父类/基类)的属性和方法。通过继承,子类可以复用父类的代码,并扩展新的功能。

语法示例:

class Animal {  // 父类
    void eat() {
        System.out.println("Animal is eating");
    }
}

class Dog extends Animal {  // 子类
    void bark() {
        System.out.println("Dog is barking");
    }
}

3.4.2 继承的类型

  1. 单继承:Java只支持单继承,即一个子类只能有一个直接父类。
  2. 多重继承(通过接口实现):虽然类不能多继承,但可以通过实现多个接口来达到类似效果。

3.4.3 方法重写(Override)

子类可以重写父类的方法以满足特定需求。重写时需遵循以下规则:

  • 方法名、参数列表必须相同。
  • 返回类型可以是父类方法返回类型的子类(协变返回类型)。
  • 访问修饰符不能比父类更严格。
  • 不能重写private、final或static方法。

示例:

class Animal {
    void makeSound() {
        System.out.println("Animal sound");
    }
}

class Cat extends Animal {
    @Override
    void makeSound() {
        System.out.println("Meow");
    }
}

3.4.4 super关键字

super用于引用父类的成员(属性或方法),常用于:

  • 调用父类的构造方法(super()必须放在子类构造方法的第一行)。
  • 访问被重写的父类方法。

示例:

class Parent {
    String name = "Parent";
}

class Child extends Parent {
    String name = "Child";
    void printNames() {
        System.out.println(super.name); // 输出 Parent
        System.out.println(this.name);  // 输出 Child
    }
}

3.4.5 多态的实现

多态是指同一个行为具有多种表现形式,分为:

  1. 编译时多态:通过方法重载实现。
  2. 运行时多态:通过方法重写和父类引用指向子类对象实现。

示例:

Animal myAnimal = new Dog();  // 父类引用指向子类对象
myAnimal.makeSound();         // 调用的是Dog类重写的方法

3.4.6 instanceof操作符

用于检查对象是否是特定类或其子类的实例:

if (myAnimal instanceof Dog) {
    Dog myDog = (Dog) myAnimal;  // 向下转型
}

3.4.7 继承的优缺点

优点:

  • 代码复用,减少冗余。
  • 易于维护和扩展。

缺点:

  • 过度使用会导致类层次复杂。
  • 破坏封装性(子类依赖父类实现)。

3.4.8 实战练习

  1. 设计一个Shape父类,包含draw()方法,派生出Circle和Rectangle子类并重写该方法。
  2. 使用多态实现一个方法,接受Shape参数并调用其draw()方法。

下一节:3.5 接口与抽象类

Last Updated:: 3/27/25, 12:48 PM