提取超类重构允许将类的某些成员提取到一个超类中。在CLion中,此重构适用于C++、Objective-C/C++、Python和JavaScript代码。

示例

C++

之前之后
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; };

Objective-C/C++

之前之后
@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

Python

之前之后
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, yclass SuperClass: def eval_smth(self, a, b, c): x = 2*b - c y = 2*b + c return x, y class BaseClass(SuperClass): pass

JavaScript

之前之后
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'); } }

提取超类

  1. 在一个视图中选择所需的类,或者仅在编辑器中打开它。
  2. 从主菜单中选择 Refactor | Extract/Introduce | Superclass,或从上下文菜单中选择 Refactor | Extract Superclass。
  3. 在出现的“提取超类”对话框中,指定以下信息:

    • 在“从类中提取超类”字段中,指定新超类的名称。
    • 要包含在超类中的成员
      1.png

    “从类中提取超类”字段显示应该提取超类的类的名称。它是只读的。

  4. 单击“重构”以继续重构。超类将被创建,原始类将被修改为继承它:

提取类相关成员

我们来看一下以下代码示例:

int d1;
class XClass {
    static const int d2 = 13;
    int exRes = d2 * d1;
};

正如您所见,d1exRes 之间存在依赖关系。如果您将上述类应用于提取超类重构,并尝试选择要移动的 exRes,CLion会用蓝色突出显示 d2 变量:

2.png

尝试继续提取,您将收到以下警告消息:

3.png

选择“继续”以忽略问题并继续重构,或选择“取消”以返回并解决问题。您还可以在查找工具窗口中查看冲突。

标签: clion破解, clion破解教程, clion教程, clion基础教程, clion高级教程, clion核心教程, clion免费激活码, clion免费注册码, clion注册码在线生成, clion激活