目录
由于有其他语言的一个基础,就直接快速的进行学习、熟悉语法了
一.变量
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();
}
打印输出: