Dart的静态属性和静态方法

2022-02-14  本文已影响0人  见字如晤一

学习完基本语法、函数、类和对象,给我的感觉最大的就是Dart和Java太像了,不知道是不是错觉。今天我们来学习Dart的static关键字,静态!!!

静态有:1、没有静态类 2、静态方法 3、静态属性

先来看一段代码:

class Rect {
  //定义静态属性:1、通过static关键字定义静态属性
  // 2、需要给到初始化值,否则需要再static后加上late关键字标识延迟赋值
  static int height = 0;
  static late int width;
  int area = 0;

  Rect() {}

  //定义静态方法,通过static关键字实现
  static void setWidth(int w) {
    width = w;
  }

  //定义非静态方法,可以访问静态方法和静态属性,以及非静态属性
  //1、非静态属性可加也可不加this,this代表的是类对象
  //2、静态属性不能加this,因为静态属于类,不属于对象
  //3、访问静态方法,直接调用
  //4、访问非静态方法,直接调用
  void setMyWidth(int w) {
    print("默认面积 area = " + area.toString());
    print("高 = " + height.toString()); //
    setWidth(w);
    printInfo();
  }
  
  void printInfo(){
    print("print info");
  }

  //定义静态方法,可以访问的只有静态方法和静态属性,不能访问非静态属性和非静态方法
  static void setMyW(int w){
    // print("默认面积 area = " + area.toString());//不能访问非静态属性
    print("高 = " + height.toString()); //
    setWidth(w);
    // printInfo();//不能访问非静态方法
  }
}

一、静态类
Dart中没有静态类,没有内部类(也没有静态内部类!!)

Classes can't be declared inside other classes. 

定义接口

二、静态方法
静态方法中,可以访问静态属性,不可以访问非静态属性。可以访问静态方法,不可以访问非静态方法。

三、静态属性

可以被静态方法或非静态方法访问。不能在静态属性前加this.

四、非静态方法

非静态方法,可以访问静态方法和静态属性,以及非静态属性、非静态方法。遵循下列规则:
  1、非静态属性可加也可不加this,this代表的是类对象
  2、静态属性不能加this,因为静态属于类,不属于对象
  3、访问静态方法,直接调用
  4、访问非静态方法,直接调用

总结:

Dart中的静态成员:
1、使用static 关键字来实现类级别的变量和函数
2、静态方法不能访问非静态成员,非静态方法可以访问静态成员

上一篇下一篇

猜你喜欢

热点阅读