IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Flutter学习笔记--Dart中的类 -> 正文阅读

[移动开发]Flutter学习笔记--Dart中的类

目录

1.类的基础语法

2.类的继承和重载

3.抽象类和枚举

4.实现接口

5.Dart中的方法

? ? ? ? 1.构造方法

? ? ? ? 2.静态方法

3.可选参数方法

4.getter和setter方法

5.匿名函数

6.泛型


1.类的基础语法

????????Dart中使用Class关键字定义一个类。

? ? ? ? 和其它语言一样,类方法的调用形式为"对象.方法"。

? ? ? ? 实例代码如下:定义一个People类,并且给对象赋值。

class People{
  String name;
  int age;
}

void main() {
  var student = People();
  student.name = "废柴";
  student.age = 18;
  print('学生姓名:'+student.name+'\t年龄:\t'+student.age.toString());
}

控制台打印日志如下:

Performing hot restart...
Syncing files to device iPhone 13 Pro Max...
Restarted application in 347ms.
flutter: 学生姓名:废柴?? ?年龄:?? ?18

? ? ? ? Dart中还有一个比较使用的方法,就是可以通过"对象?.方法名称"的形式类实现类方法的调用,这样可以避免对象为null时候,程序出现异常。

????????

class People{
  String name;
  int age;
}

void main() {
  var student = People();
  student.name = "废柴";
  student.age = 18;
  // student = null;
  // print(student.name) //此时程序会报异常,这个时候,我们可以使用student?.name避免这个问题。
  print('学生姓名:'+student.name+'\t年龄:\t'+student.age.toString());
}

2.类的继承和重载

? ? ? ? Dart中使用extends关键字表示继承关系,Dart支持多继承,使用关键字with可以实现多继承。

? ? ? ? 代码如下:

class People{
  String name;
  int age;
  void basicInformation(){
    print('人类信息');
  }
}
//学生类 使用extends关键字表示 Student类继承自People类
class Student extends People{
  String studentId;
  String studentIdentity;

  @override
  void basicInformation(){
    print('学生信息');
  }
}


class Worker{
  String workerId;
  String workerName;

  void workerInfo(){
    print('打工人信息');
  }
}

// myIdentify类使用with继承了Student和Worker类,既可以调用 学生类的 basicInformation方法,
// 也可以调用 worker类的workerInfo方法
class myIdentify extends Student with Worker{
  void infor(){
    print('我的信息');
  }
}

3.抽象类和枚举

? ? ? ? Dart中使用abstract关键字将一个类声明为抽象类,在抽象类中定义抽象方法,变量等等。

abstract class AbstractClass{
  void abstractMethod();//定义抽象方法
}

class MyImplement extends AbstractClass{
  @override
  void abstractMethod() {
    // TODO: implement abstractMethod
    print('我是抽象方法实现类');
  }
}

void main() {
  MyImplement().abstractMethod();
}

控制台日志如下:

Performing hot restart...
Syncing files to device iPhone 13 Pro Max...
Restarted application in 325ms.
flutter: 我是抽象方法实现类

4.实现接口

? ? ? ? Dart支持多个接口实现,可以使用implements关键字。

? ? ? ? 实例代码如下:

class Student {
  Student();
  String study(){
    return 'I am a student,today i learn something';
  }
}

class ImlClass implements Teacher,Student{
  @override
  String teach() {
    // TODO: implement teach
    throw UnimplementedError();
  }
  @override
  String study() {
    // TODO: implement study
    throw UnimplementedError();
  }

  @override
  // TODO: implement _name
  get _name => throw UnimplementedError();
}

5.Dart中的方法

? ? ? ? 1.构造方法

? ? ? ? ? ? ? ? 构造方法通常是用来通过传递一些参数类初始化这个类,构造方法需要和类同名。

? ? ? ? ? ?实例代码如下:我们定义一个三角形的类,通过传递宽高,初始化三角形这个类。

????????????????

class TriangleSize {
  double width;
  double height;
  TriangleSize(double width,double height){
    this.width = width;
    this.height = height;
  }
}

void main() {
  var triangle = TriangleSize(2,3);
  print(triangle.width);
}

? ? ? ? 2.静态方法

? ? ? ? ? ? ? ? 静态方法的调用使用类名+静态方法名的方式直接调用静态方法。

? ? ? ? ? ? ? ? 实例代码如下:

class StaticClass{
  static void printMethod(){
    print('我是静态方法类');  
  }
}

void main() {
  StaticClass.printMethod();
}

3.可选参数方法

? ? ? ? dart中具有可选参数方法,调用方法是,我们可以只传递部分参数。

? ? ? ? 实例代码如下:

class StaticClass{
  static void printMethod({String name,String arguments2}){
    print('我是静态方法类');
  }
}

void main() {
  StaticClass.printMethod(name: '123');
  StaticClass.printMethod(arguments2: 'arguments2');
  StaticClass.printMethod(name: '123',arguments2: '2');

}

4.getter和setter方法

? ? ? ? Dart中自动会生成Setter和getter方法。

? ? ? ? 赋值操作相当于setter方法。

? ? ? ? 取值操作相当于getter方法。

5.匿名函数

? ? ? ? 当我们使用Flutter创建项目的时候,系统会自动生成一个计时器的Demo.里面就是匿名函数,代码如下:

????????

void _incrementCounter(){
  setState({
    _counter++;
  });
}

6.泛型

? ? ? ? Dart中使用T来表示泛型:

????????

void setData<T>(String key, T value)
{
  print("key=${key}" + " value=${value}");
}

T getData<T>(T value)
{
  return value;
}


void main(List<String> args) {
  setData("name", "hello dart!"); 	// string类型
  setData("name", 123); 				// int 类型

  print(getData("name"));  			// string类型
  print(getData(123));  				// int 类型
  // print(getData<bool>("hello"));		// Error,约束了类型是bool但是传入了String,所以编译器会报错

}

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章           查看所有文章
加:2021-10-06 12:20:40  更:2021-10-06 12:23:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:14:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码