热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Flutter】Dart的类方法和对象操作符

1.写在前面在上篇文章中介绍了Dart中的工厂构造&单例对象&初始化列表,那么现在就继续来学习Dart的类方法和对象操作符。【Flutter】苹果Mac电脑配置fl

1. 写在前面

在上篇文章中介绍了Dart中的工厂构造&单例对象&初始化列表,那么现在就继续来学习 Dart的类方法和对象操作符。

Flutter

【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));

这里使用?是防止出错,因为 sdynamic类型,有可能为空的情况,加?就是说可以为空。


  • 对象符合 as

下面这种情况,s是对象类型,但不知道具体类型,所以调用 sum方法报错,那么就需要进行类型的转换了。
报错信息


类型的转换可以使用 as,这是 Swift 一样的意思,如下:


类型转换


哪里需要类型的转换,就在哪里转换。



  • 对象符合 is

还有一种就是 if判断的形式,判断是否是某一种类型

void main() {var s = Object();s = StaticClass();// print((s as StaticClass).sum(10));if (s is StaticClass) {print(s.sum(10));}
}

还有一种对象的操作符点点(..),这个就让人很出乎预料了。
操作符


打印的居然不是方法调用的结果,而是返回的是类本身,这其实就是链式编程。


链式编程
链式编程可以一直点下去,只不过dart这里是两个点,原理都是一样,返回类,继续调用,继续返回继续调用。


3. 写在后面


关注我,更多内容持续输出



  • CSDN
  • 掘金
  • 简书

🌹 喜欢就点个赞吧👍🌹



🌹 觉得有收获的,可以来一波 收藏+关注,以免你下次找不到我😁🌹



🌹欢迎大家留言交流,批评指正,转发请注明出处,谢谢支持!🌹



推荐阅读
author-avatar
书苑幽香
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有