提取超类
提取超类重构允许将类的某些成员提取到超类中。 在 CLion 中,此重构适用于 C++、Objective-C/C++、Python 和 JavaScript 代码。
示例
之前 | 之后 |
|---|---|
class SomeClass {
char SomeChar = 'a';
long d22;
//This function will be extracted to a base class
void exFunc(int);
};
|
class SuperClass {
void exFunc(int);
};
class SomeClass : public SuperClass {
char SomeChar = 'a';
long d22;
};
|
之前 | 之后 |
|---|---|
@interface SClass : NSObject {
int v; //This variable will be extracted to a superclass
}
- (void)initV;
@end
@implementation SClass
- (void)initV {
v = 20;
}
@end
|
@interface SuperClass : NSObject { int v; }
@end
@interface SClass : SuperClass
- (void)initV;
@end
@implementation SClass
- (void)initV {
v = 20;
}
@end
|
之前 | 之后 |
|---|---|
class BaseClass:
# This function will be extracted to a base class
def eval_smth(self, a, b, c):
x = 2*b - c
y = 2*b + c
return x, y
|
class SuperClass:
def eval_smth(self, a, b, c):
x = 2*b - c
y = 2*b + c
return x, y
class BaseClass(SuperClass):
pass
|
之前 | 之后 |
|---|---|
class Editor {
//This function will be extracted to a superclass
View() {
console.log(this.name + ' can view');
}
Edit() {
console.log(this.name + ' can edit');
}
}
|
class User {
View() {
console.log(this.name + ' can view');
}
}
class Editor extends User {
Edit() {
console.log(this.name + ' can edit');
}
}
|
提取一个超类
在编辑器中,选择您想要提取到超类中的类成员。
从主菜单中选择 或从上下文菜单中选择 。

在 提取超类 对话框中,指定以下内容:
在 从中提取超类 字段中输入新超类的名称。
要包含在超类中的成员。

点击 预览 以在继续之前检查重构结果。 如果出现问题,CLion会通知您。

依赖问题也会在提取对话框中突出显示:

点击 提取 以继续重构。 CLion将创建一个超类并修改原始类以继承该超类。
最后修改日期: 2025年 9月 26日