作者:书苑幽香 | 来源:互联网 | 2023-08-11 15:45
1.写在前面在上篇文章中介绍了Dart中的工厂构造&单例对象&初始化列表,那么现在就继续来学习Dart的类方法和对象操作符。【Flutter】苹果Mac电脑配置fl
1. 写在前面
在上篇文章中介绍了Dart
中的工厂构造
&单例对象
&初始化列表
,那么现在就继续来学习 Dart
的类方法和对象操作符。
【Flutter】苹果Mac电脑配置flutter开发环境
【Flutter】 Android Studio 安装第三方模拟器—网易MuMu
【Flutter】项目运行报错Failed to find Build Tools revision 29.0.2
【Flutter】flutter doctor 报错Android license status unknown. Run `flutter doctor --android-licenses‘
【Flutter】如何新建项目,运行你的第一个 flutter 工程项目
【Flutter】Dart中的var、final 和 const基本使用
【Flutter】Dart数据类型之num
【Flutter】Dart数据类型之String
【Flutter】Dart的数据类型list&Map(数组和字典)
【Flutter】Dart的方法与箭头函数
【Flutter】Dart的方法中的可选参数、方法作为参数传递
【Flutter】Dart中的匿名函数、闭包
【Flutter】Dart中的类和对象
【Flutter】Dart中的构造函数
【Flutter】Dart的工厂构造方法&单例对象&初始化列表
2. 类方法
我们在学习 OC
的时候,有实例方法和类方法,OC
的类方法以加号“+
”开头,只能用类名调用,对象不能调用,那么 dart
中的类方法该怎么表示呢?
class StaticClass {static String name = "reno";int height = 180;int count = 0;static setName(String name1){name = name1;return name;}int sum(int a) {return a + count + height;}
实例方法可以访问,非静态成员和静态成员,对象方法在 dart
中就是静态方法,在静态方法中不可以访问静态成员属性,也就是实例成员,否则会报错的。
具体的报错信息,可以查看Dart Analysis
,如下:
报错❎:error: Instance members can’t be accessed from a static method
错误:无法从静态方法访问实例成员。
那为什么静态方法不能访问实例成员呢?
仔细想一想,静态方法是通过类名调用的,你类都没有哪里来的实例啊,对吧!所以就不让你访问;但是实例方法的调用,实例肯定是存在的,那么访问实例对象就肯定是可以的。
类方法的调用如下:
直接类名调用类方法和静态的属性。
static const int id = 30061111111888888;
常量就是在常量区,常量只有一份就必须用static
来修饰。
var s;s = StaticClass();print(StaticClass.name);s = null;print(s?.sum(10));
这里使用?
是防止出错,因为 s
是dynamic
类型,有可能为空的情况,加?
就是说可以为空。
下面这种情况,s
是对象类型,但不知道具体类型,所以调用 sum
方法报错,那么就需要进行类型的转换了。
类型的转换可以使用 as
,这是 Swift
一样的意思,如下:
哪里需要类型的转换,就在哪里转换。
还有一种就是 if
判断的形式,判断是否是某一种类型
void main() {var s = Object();s = StaticClass();if (s is StaticClass) {print(s.sum(10));}
}
还有一种对象的操作符点点(..
),这个就让人很出乎预料了。
打印的居然不是方法调用的结果,而是返回的是类本身,这其实就是链式编程。
链式编程可以一直点下去,只不过dart
这里是两个点,原理都是一样,返回类,继续调用,继续返回继续调用。
3. 写在后面
关注我,更多内容持续输出
🌹 喜欢就点个赞吧👍🌹
🌹 觉得有收获的,可以来一波 收藏+关注,以免你下次找不到我😁🌹
🌹欢迎大家留言交流,批评指正,转发
请注明出处,谢谢支持!🌹