学习笔记-Flutter-dart语法(1)

目录

一.变量

二.常量定义

 三.List

四.对象

五.抽象

六、多继承

由于有其他语言的一个基础,就直接快速的进行学习、熟悉语法了

一.变量

void test1() {
  // 这里使用var 声明 后续可以改成其他类型  这里类似groovy
  print('----------test1-------');
  var a;
  a = 10;
  print(a.runtimeType);
  a = "123";
  print(a.runtimeType);
  print('$a');
  print('---------dynamic---------');

  // d 的数据类型是dynamic 这种类型的意思是动态的  可以改成其他的类型,类似var
  dynamic d = 10;
  d++;
  d = 'dart';
  print('d:$d');

  print('---------Object---------');
  Object c = "dou cafe cat";
  c = 123;
  c = [222];
  print('c:$c');

}

        打印输出: 

二.常量定义

// 常量
void test3() {
  print('--------------test3----------');
  // const定义常量 被他定义的常量 不止地址不能改  内部变量的地址也不能改,改动会报异常
  // Unsupported operation: Cannot modify an unmodifiable list
  // const ARY = [1, 2, 3, 4, 5];
  // final 定义的只是定制不能变,但里边的地址是可以变的  final跟kt中的val相似
  final ARY = [1, 2, 3, 4, 5];
  ARY[1] = 50;
  ARY.forEach((it){
    print('$it,');
  });
}

打印输出:

 三.List

List arrayTest() {
  print('----------arrayTest---------------');
  var list = [];
  list.add(0);
  list.add("value" );
  list.add([5]);
  // 级联调用方法    ..
  // list..add(0)..add("value")..add([5]);
  print(list);
  print(list[2]);
  return list;
}

// 便利
void arrayLoop(List list) {
  print('----------arrayLoop---------------');

  print('java -- for循环方式');
  for (var i = 0; i < list.length; i++) {
    print('item : ${list[i]}');
  }

  print('foreach  in方式');
  for (var item in list) {
    print('item : $item');
  }

  print('foreach 方式');
  list.forEach((element) {
    print('item : $element');
  });
}

打印输出:

四.对象

class UserInfo {
  String? name;
  int? age;

  // 定义成私有成员(前面加下划线) 私有成员不能被外部直接访问
  late String _id;
  int? _height;

  // UserInfo(this.name, this.age);

  UserInfo.aa(String name, int age) {
    this.name = name;
    this.age = age;
  }

  UserInfo({String name = "", int age = 0, int height = 0}) {
    this.name = name;
    this.age = age;
    _height = height;
  }

  String get id => _id;

  set id(String value) {
    _id = value;
  }

  int? get height => _height;

  set height(int? value) {
    _height = value;
  }

  // 重定向构造器函数, 使用冒号调用其他构造函数
  UserInfo.bb(String name, int age) : this.aa(name, age);
}

void main() {
  UserInfo userInfo = UserInfo(name: "huahua", age: 18);
  print('userInfo的名称: ${userInfo.name}  年龄是: ${userInfo.age}');
}

打印输出:

        

五.抽象

// 抽象
// abstract 的类 不能直接使用   只能使用他的实现类(子类)
abstract class Person {
  String name;
  int age;

  Person(this.name, this.age);

  Person.second(this.name, this.age);

  void show() {
    print('$name  $age');
  }

  //抽象方法定义规则,要求子类必须继承
  void marry();
}

// 子类继承  必须实现抽象方法
class Boy extends Person {
  late double height;

  Boy(this.height, String name, int age) : super(name, age);

  @override
  void show() {
    print('realize function show');
  }

  @override
  void marry() {
    print('realize function marry');
  }

}

六、多继承

/// 多继承的概念

class First {
  void doPrint() {
    print('First');
  }
}

class First2 {
  void doPrint() {
    print('First2');
  }
}

class Second {
  void doPrint() {
    print('Second');
  }
}

class Father {
  void doPrint() {
    print('Father');
  }
}

/// 当同时继承的类都有实现某个方法时,优先使用with后边的类的方法
class Son1 extends Father with First implements Second {}
/// 当with后边多个类中都实现了某个方法时, 优先最后一个类的方法
/// extends、implements 后边的类可以有构造方法    with后边的类  不能有构造方法
class Son2 extends Father with First, First2 implements Second {}

void main() {
  Son1 son1 = Son1();
  son1.doPrint();
  Son2 son2 = Son2();
  son2.doPrint();
}

打印输出:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值