📜  Dart – Super 和 This 关键字

📅  最后修改于: 2021-09-02 05:42:05             🧑  作者: Mango

Dart的超级关键字:

在Dart, super关键字用于引用直接父类对象。它用于调用超类的属性和方法。它不调用方法,而当我们创建子类的实例时,父类的实例是隐式创建的,因此 super 关键字调用该实例。

super关键字的优点:

  • 它可以用来访问父类的数据成员当两个父母和孩子有相同名称成员。
  • 它用于防止覆盖父方法。
  • 它可用于调用父类的参数化构造函数。

句法:

// To access parent class variables
super.variable_name;

// To access parent class method
super.method_name();

示例 1:显示继承中对象创建的流程。

class SuperGeek {
  
    // Creating parent constructor
    SuperGeek()
    {
        print("You are inside Parent constructor!!");
    }
}
  
class SubGeek extends SuperGeek {
  
    // Creating child constructor
    SubGeek()
    {
        print("You are inside Child constructor!!");
    }
}
  
void main()
{
    SubGeek geek = new SubGeek();
}

输出:

You are inside Parent constructor!!
You are inside Child constructor!!

示例#2:访问父类变量

// Creating Parent class
class SuperGeek {
    String geek = "Geeks for Geeks";
}
  
// Creating child class
class SubGeek extends SuperGeek {
  
    // Accessing parent class variable
    void printInfo()
    {
        print(super.geek);
    }
}
  
void main()
{
    // Creating child class object
    SubGeek geek = new SubGeek();
  
    // Calling child class method
    geek.printInfo();
}

输出:

Geeks for Geeks

示例 #3:访问父类方法

class SuperGeek {
  
    // Creating a method in Parent class
    void printInfo()
    {
        print("Welcome to Gfg!!\nYou are inside parent class.");
    }
}
  
class SubGeek extends SuperGeek {
  
    void info()
    {
        print("You are calling method of parent class.");
  
        // Calling parent class method
        super.printInfo();
    }
}
  
void main()
{
    SubGeek geek = new SubGeek();
    geek.info();
}

输出:

You are calling method of parent class.
Welcome to Gfg!!
You are inside parent class.

Dart的这个关键字:

super关键字用于调用父类,而关键字用于调用类本身。

这个关键字的优点:

  • 可用于调用当前类的实例变量。
  • 它可用于设置实例变量的值。
  • 它可用于返回当前类实例。

在Dart使用这个关键字 –

// Creating class
class Geek {
  
    // Creating an instance variable
    String geek_info;
  
    // Creating a parameterized constructor
    Geek(String info)
    {
        // Calling instance variable using this keyword.
        this.geek_info = info;
    }
    void printInfo()
    {
        print("Welcome to $geek_info");
    }
}
  
void main()
{
    Geek geek = new Geek("Geeks for Geeks");
    // Calling method
    geek.printInfo();
}

输出:

Welcome to Geeks for Geeks