【Dart】006-类的定义和使用

news/2024/12/2 19:52:47/

【Dart】006-类的定义和使用

文章目录

  • 【Dart】006-类的定义和使用
  • 一、类的定义
    • 1、概述
    • 2、简单定义与实例化
      • 代码示例
      • 运行结果
    • 3、成员方法
      • 代码示例
      • 运行结果
      • 箭头函数写法
    • 4、get 与 set 关键字
      • 概述
      • 代码示例
      • 运行结果
  • 二、类的构造方法
    • 1、特点
    • 2、完整版的构造方法
      • 简化版
      • 完整版
    • 3、使用命名参数
    • 4、命名构造
  • 三、类中的不可变成员与静态成员
    • 1、不可变成员
      • 代码示例
      • 报错
    • 2、静态成员
      • 代码示例
      • 运行结果
    • 3、静态方法
      • 代码示例
      • 运行结果
  • 四、成员和类的可见性

在编程中, 的目的是组织 数据功能 ,起到封装的作用,提供解决某类特定问题的方案,或方案中的某一环节。

一、类的定义

1、概述

类通过 class 关键字进行定义,其后单词表示 类的名称 。名称之后,通过 {} 表示类定义的作用域,在其中定义类的 成员变量成员方法

class ${className}{// 类体
}

2、简单定义与实例化

代码示例

void main(List<String> arguments) {// 实例化对象Student student = Student('张三', 18);// 访问成员变量print(student.name);print(student.age);// 修改成员变量student.name = '李四';student.age = 20;// 再次访问成员变量print(student.name);print(student.age);
}/// 学生类
class Student {/// 名字String name;/// 年龄int age;Student(this.name, this.age);
}

运行结果

张三
18
李四
20

3、成员方法

代码示例

void main(List<String> arguments) {// 实例化对象Student student = Student('张三', 18);// 调用成员方法,获取学生的基本信息描述String info = student.getStudentInfo();// 打印信息print(info);
}/// 学生类
class Student {/// 名字String name;/// 年龄int age;Student(this.name, this.age);/// 获取学生的基本信息描述String getStudentInfo() {return '姓名:${this.name},年龄:${this.age}';}
}

运行结果

姓名:张三,年龄:18

箭头函数写法

/// 获取学生的基本信息描述
String getStudentInfo() => '姓名:${this.name},年龄:${this.age}';

4、get 与 set 关键字

概述

getset 关键字修饰的是 成员方法 ,其实本质上来说它们只是一种简写方式,常用于对 成员变量 的维护。它只不过是个语法糖而言,本质上仍是方法。

代码示例

void main(List<String> arguments) {// 实例化对象Student student = Student('张三', 18);// getNameprint(student.getName);// setNamestudent.setName = '李四';print(student.getName);// getStudentInfoprint(student.getStudentInfo);
}/// 学生类
class Student {/// 名字String name;/// 年龄int age;Student(this.name, this.age);/// 获取名字的get方法String get getName => name;/// 设置名字的set方法set setName (String name) => this.name = name;/// 获取学生基本信息String get getStudentInfo => '姓名:$name,年龄:$age';
}

运行结果

张三
李四
姓名:李四,年龄:18

二、类的构造方法

1、特点

构造方法作为一种特殊的函数,在定义上有一些独有的特点:

  • 【1】构造方法在声明时无 返回值
  • 【2】构造方法 可以 没有方法体。
  • 【3】在参数列表中可以通过 this.成员 ,可以为成员变量进行赋值。

2、完整版的构造方法

简化版

Student(this.name, this.age);

完整版

Student(String name, int age): this.name = name,this.age = age;

3、使用命名参数

Student(this.name, { required int thisAge }) : age = thisAge;

4、命名构造

一个类多个构造!

/// 学生类
class Student {/// 名字String name;/// 年龄int age;/// 默认对象Student.defaultObj(): name = "訾博", age = 27;/// 二倍年龄Student.doubleAge(this.name, int age): age = age * 2;
}

三、类中的不可变成员与静态成员

1、不可变成员

在前面介绍量的定义时,我们知道 final 关键字修饰的成员只能被赋值一次。如果类的一个成员变量使用 final 进行修饰,就表示这个成员不允许进行修改。

代码示例

void main(List<String> arguments) {// 实例化对象Student student = Student('张三', 18);student.name = "訾博";
}/// 学生类
class Student {/// 名字final String name;/// 年龄final int age;Student(this.name, this.age);
}

报错

image-20230716160421859

2、静态成员

静态成员由 本身直接访问,不依附于 对象

代码示例

void main(List<String> arguments) {print(Student.name);
}/// 学生类
class Student {/// 名字static String name = "訾博";
}

运行结果

訾博

3、静态方法

static也可以修饰类的成员方法,称为静态方法

代码示例

void main(List<String> arguments) {Student.printName("訾博");
}/// 学生类
class Student {/// 打印名字static printName(String name) => print(name);
}

运行结果

訾博

四、成员和类的可见性

在Dart中,成员和类可以具有不同的可见性,这由一些访问修饰符控制。这些修饰符确定了在代码中的哪些位置可以访问类或成员。

Dart中有四种可见性修饰符:

  1. public:默认的可见性修饰符。如果没有显式指定修饰符,类和成员默认为公共的。公共成员可以在任何位置被访问。

  2. private:使用下划线 _ 开头的标识符被视为私有的。私有成员只能在同一个库(文件)中被访问,无法从库的外部访问。

    class MyClass {String _privateField;void _privateMethod() {// 私有方法的实现}
    }
  3. protected:在Dart中没有直接的 protected 关键字,但可以通过约定来模拟 protected 成员。使用下划线 _ 开头的标识符被视为库内部的私有成员,但可以被子类访问。

    class MyBaseClass {String _protectedField;void _protectedMethod() {// 受保护方法的实现}
    }class MyDerivedClass extends MyBaseClass {void accessProtectedMember() {_protectedField = 'Value'; // 可以在子类中访问受保护字段_protectedMethod(); // 可以在子类中调用受保护方法}
    }
    
  4. package-private:在Dart中没有直接的 package-private 关键字,但可以通过约定来模拟。如果在定义类或成员时不使用任何可见性修饰符,它将具有包级私有性。包级私有成员只能在同一个包中被访问。

    class _PackagePrivateClass {// 包级私有类
    }void _packagePrivateFunction() {// 包级私有函数
    }
    

http://www.ppmy.cn/news/917525.html

相关文章

利用无代码搭建“OA办公管理系统”

自信息时代开始以来&#xff0c;对开发人员的需求不断增长&#xff0c;开发人员是应用程序开发的智者。代码运行着这个世界&#xff0c;它是我们每天都会看到和使用的网站和应用程序的骨干&#xff0c;并且它继续吞噬着越来越多的东西&#xff0c;越来越多的程序可以通过代码来…

中小企业也可以免费使用OA协同办公系统啦!!

关键词&#xff1a;OA办公系统、知识管理系统、群晖NAS 编者按&#xff1a; 随着数字化转型的浪潮&#xff0c;中小企业对于数字化工具和系统的需求不断增加。而免费的系统为中小企业提供了低成本、高效率的解决方案&#xff0c;帮助它们实现数字化转型。因此&#xff0c;中小企…

JAVA办公管理系统(OA)

办公系统&#xff08;OA&#xff09; 一. 用户&#xff1a; 1. 登录。 2. 分配用户和权限 二&#xff0e; 个人信息&#xff1a; 1. 个人信息完善&#xff08;修改&#xff09; 2. 登录密码修改和重置 三. 请假&#xff1a; 1. 请假单录入 2. 请假单提交&#xff08;二…

开源OA系统-JEOS办公系统,完全开源免费的OA系统

JEOS办公系统是用c#开发的一款完全开源免费的OA系统&#xff0c;其源代码具有很大的学习参考价值 涵盖独立的流程引擎&#xff0c;精彩的表单设计&#xff0c;便捷的在线office文档管理等 官网&#xff1a;http://www.jeos.cc/web/index.html

oa办公系统定制开发

办公平台选择得适合&#xff0c;才会有更好的反馈。开发制作智慧办公app软件能提供丰富的办公场景&#xff0c;支持远程以及异地办公&#xff0c;不管是请假审批还是内部通讯都会变得很轻松&#xff0c;不用担心影响办公进度。 办公要便捷&#xff0c;就得选择合适的工具平台。…

适合中小型企业的OA系统网上试用整理

1、黄城OA 永久免费OA系统 官网地址&#xff1a;http://www.68oa.cn 演示地址&#xff1a;http://www.demo.68oa.cn 点评&#xff1a;黄城免费OA系统功能强大、操作简单&#xff0c;不限创建用户数&#xff0c;而且服务都是永久免费的&#xff0c;是国内广大中小企事业单位…

OA办公系统源码

办公自动化&#xff08;OA&#xff09;是面向组织的日常运作和管理&#xff0c;员工及管理者使用频率最高的应用系统&#xff0c;既可以用来搭建企业网站&#xff0c;也可聚合在政府网站中&#xff0c;应用广泛。 文件&#xff1a;590m.com/f/25127180-498614174-c340c8&#…

永久免费oa办公系统到底靠不靠谱?免费oa办公系统市场分析

永久免费 oa办公系统到底靠不靠谱&#xff1f;免费oa办公系统 市场分析 大家在买东西的时候除了看商品质量 &#xff0c; 还会看什么呢&#xff1f; 没错 &#xff0c; 就是价格&#xff01;购买任何产品都会遇到 “性价比”这个词&#xff0c;企…