---
source_url: https://docs.dolphindb.cn/zh/progr/inheritance.html
fetched_at: 2026-05-19T09:02:52Z
category: progr
title: 继承和多态
sha1: cc1498cb820d88ecbefb896c70c9aa67bf907613
---

# 继承和多态

## 继承

在 DolphinDB 脚本中，虽然只支持单继承模式，即一个类仅能从一个父类继承，但得益于其动态语言的特性和鸭子类型（duck
typing）的概念，对象的类型由其行为决定，而非其继承关系。这意味着，即使没有多继承，一个类也能模拟多个类的特性，只要它实现了所需的方法和属性。

**用法**

在 DolphinDB
脚本中，类的继承允许派生类继承基类的属性和方法。但是，需要特别注意的是，派生类中的属性名必须是唯一的，不能与基类中的属性名重复。

```dolphindb
class Base {
	alpha :: INT
	def Base(a) {
		alpha = a
	}
	def method() {
		print(alpha)
	}
}

class Derived : Base {
	beta :: INT
    // 派生类中的属性名不能和基类中的重复，会出现报错
//	alpha :: INT
	def Derived(a, b) {
		alpha = a
		beta = b
	}
	def method2() {
		method()
		// 可以使用基类中的属性
		print(alpha + beta)
	}
}

x = Derived(1,2)
x.method2()

//output: 1 3
```

在派生类中可以调用基类的构造函数。

```dolphindb
class Base {
	alpha :: INT
	def Base(a) {
		alpha = a
	}
	def method() {
		print(alpha)
	}
}

class Derived : Base {
	beta :: INT
	def Derived(a, b) {
		Base(a)
		beta = b
	}
	def method2() {
		method()
	}
}

x = Derived(1,2)
x.method2()

//output: 1
```

## 多态

在类的定义中，方法的行为类似于 C++
中的虚函数，它们支持多态性。当派生类中出现与基类同名的方法时，派生类的方法将覆盖基类的方法。为了实现正确的方法覆盖（重写），派生类的方法必须与基类的方法具有相同的函数签名（参数列表和返回类型）是相同的。

```dolphindb
class Base {
	def Base() {}
	def virtualMethod() {}
	def doSomething() {
		virtualMethod()
	}
}
class Derived : Base {
	alpha :: INT
	def Derived(a) {
		alpha = a
	}
	// override
	def virtualMethod() {
		print(alpha)
	}
}
d = Derived(100)
d.doSomething()

// output: 100
```
