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,所以编译器会报错

}

猜你喜欢

转载自blog.csdn.net/ZCC361571217/article/details/120600376