当前位置: 首页 > wzjs >正文

阿里云做网站号码上海何鹏seo

阿里云做网站号码,上海何鹏seo,网络营销教学大纲,营销案例100例简短疑问代码片段&#xff1a; class _MyHomePageState extends State<MyHomePage> {int _counter 0;void _incrementCounter() {setState(() {_counter;});} }对Flutter初始文件里下划线的疑问 为什么这里的类和申明的计数器都要在前面加一个下划线&#xff1f; 在 Dart 中…

疑问代码片段:

class _MyHomePageState extends State<MyHomePage> {int _counter = 0;void _incrementCounter() {setState(() {_counter++;});}
}

对Flutter初始文件里下划线的疑问

为什么这里的类和申明的计数器都要在前面加一个下划线?

在 Dart 中,前面加下划线的命名约定是用来表示私有性的。以下是具体原因和作用:

1. 类名前的下划线

_MyHomePageState 类名前的下划线表示这个类是库私有的。
在 Dart 中,文件是通过库(library)组织的。同一个 Dart 文件中的所有代码属于同一个库。如果一个类的名字以 _ 开头,那么它只能在定义它的库中访问,无法从其他库中访问。这是一种封装机制,用来限制类的可见性。

例如:

// 文件: main.dart
class _MyHomePageState {// 只能在 main.dart 中访问
}// 文件: another.dart
import 'main.dart';void main() {var state = _MyHomePageState(); // 错误:无法访问私有类
}

2. 变量名前的下划线

_counter 是一个私有变量,前面的下划线表示它只能在当前类或当前库中访问。
这也是一种封装的方式,用来保护变量不被外部直接修改,确保数据的完整性。

例如:

class _MyHomePageState {int _counter = 0; // 私有变量void _incrementCounter() {_counter++; // 只能在类内部访问}
}void main() {var state = _MyHomePageState();print(state._counter); // 错误:无法访问私有变量
}

3. 为什么要用下划线?

封装性:通过下划线,开发者可以明确哪些类或变量是内部实现细节,哪些是对外暴露的接口。
代码安全性:防止外部代码直接访问或修改内部状态,减少错误的发生。
约定俗成:这是 Dart 的语言特性,遵循这种约定可以让代码更易读、更规范。

总结

类名前的下划线:限制类的访问范围,仅在当前库中可见。
变量名前的下划线:限制变量的访问范围,仅在当前类或库中可见。
这种机制帮助开发者实现更好的封装和模块化设计,是一种良好的编程实践。

Dart访问控制

dart没有类似其他语言的private, public来控制访问范围吗?那其他语言的protected和 无声明方式在dart里如何表示呢?

在 Dart 中,确实没有像其他语言(如 Java、C++)那样的 private、protected 和 public 关键字来控制访问范围。Dart 使用一种更简单的机制,通过命名约定和库(library)级别的访问控制来实现类似的功能。

以下是 Dart 中如何表示这些访问控制的方式:


1. 私有(Private)

在 Dart 中,私有性是通过在标识符前加下划线 _ 来实现的。

  • 作用范围:仅限于当前库(library)。
  • 等价于:其他语言中的 private。
    例如:
class MyClass {int _privateVariable = 42; // 私有变量void _privateMethod() { // 私有方法print('This is private');}
}
  • _privateVariable 和 _privateMethod 只能在当前库中访问,无法从其他库中访问。

2. 公共(Public)

在 Dart 中,默认情况下,所有未加下划线的标识符都是公共的(Public)。

  • 作用范围:可以从任何地方访问。
  • 等价于:其他语言中的 public。
    例如:
class MyClass {int publicVariable = 42; // 公共变量void publicMethod() { // 公共方法print('This is public');}
}
  • publicVariable 和 publicMethod 可以从任何库中访问。

3. 受保护(Protected)

Dart 中没有直接的 protected 关键字,但可以通过继承和库私有性的组合来实现类似的功能。

方法 1:通过继承实现
在 Dart 中,子类可以访问父类的公共成员,但无法访问私有成员(以 _ 开头的成员)。
这类似于其他语言中的 protected,但没有严格的访问限制。

例如:

class Parent {int protectedVariable = 42; // 子类可以访问int _privateVariable = 10; // 子类无法访问
}class Child extends Parent {void printVariables() {print(protectedVariable); // 可以访问// print(_privateVariable); // 错误:无法访问私有变量}
}

方法 2:通过库私有性实现
如果将父类和子类放在同一个库中,可以通过 _ 前缀的私有成员实现类似 protected 的效果,因为库内的所有代码都可以访问私有成员。


4. 无声明方式(包级访问)

Dart 中没有类似 Java 中的“包级访问”权限(即无声明方式)。
但 Dart 的库(library)机制可以实现类似的效果:

  • 在同一个库中的所有代码都可以访问彼此的私有成员。
  • 不同库之间无法访问私有成员。
    例如:
// 文件: lib/my_library.dart
class MyClass {int _privateVariable = 42; // 仅在 my_library.dart 中可见
}// 文件: lib/another_library.dart
import 'my_library.dart';void main() {var myClass = MyClass();// print(myClass._privateVariable); // 错误:无法访问私有变量
}

5. 总结对比

访问控制Dart表示方式等价于其他语言的关键字
私有_private
公共无前缀(默认)public
受保护通过继承或库私有性实现protected
包级访问通过库(library)机制实现无声明方式

Dart 的设计理念是简化访问控制,主要依赖库的作用域和 _ 前缀来实现封装和访问限制。

http://www.dtcms.com/wzjs/608349.html

相关文章:

  • 网站建设推广专家用word做网站相关论文
  • 给媳妇做的网站网站如何判断做的好不好
  • 营销软件排名搜索引擎网站推广如何优化
  • 动漫制作专业专升本大学网站优化合同
  • 网站图片防盗连怎么做如何开网店无货源不需要投资
  • 聊城做网站做的不错的网络公司深圳施工图制作
  • 德州网站优化公司酒店网站免费建设
  • 山东外贸行业网站开发微营销平台有哪些
  • 58这种网站怎么做网站建设中html5
  • 科研院所网站建设品牌包装建设网站
  • 效果好的网站建自动生成作文网站
  • 汕头网站搭建网络宣传网站建设建站
  • 加强二级部门网站建设宁夏做网站找谁
  • 成都网站建设服务新闻最新热点
  • dedecms网站搬家后登陆后台跳转后一片空白是怎么回事七牛云图床
  • 苏州建设营销网站wordpress 系统需求
  • 一个做礼品的网站成立网站有什么要求
  • 服装毕业设计代做网站如何开发应用
  • 专门做处理货的网站网站建设公司招聘
  • 高端网站建设谷美网站项目如何做需求分析报告
  • 濮阳网站建设0393seo阀门行业网站怎么做
  • 甘特图模板关于网站建设wordpress wp rocket
  • 搜索网址网站建站抖音引流推广怎么做
  • 设计新闻发布网站模板湛江有哪些网站建设公司
  • 网站外链是什么网站备案还是域名备案
  • 中山火炬开发区建设局网站酒店网站建设考虑的因素
  • 建设银行网站电脑上不去网站建设制作临沂网站建设选盛誉
  • 网站改版方案策划书电商网站设计网络服务
  • 新闻发布网站如果做网页设计素材资讯
  • 手机评测网站一个人在线观看免费中文