热门标签 | 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
  • 掘金
  • 简书

🌹 喜欢就点个赞吧👍🌹



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



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



推荐阅读
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
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社区 版权所有