dart
修饰词--------------------------------------------------------
- 被“const”修饰的值为 编译时常量
被 “var”修饰的值为 变量
被“final”修饰的值为 常量
被“dynamic”修饰的值 不指定类型 - “Object”也表示类型不明确
被“Function”修饰的函数可传递,可赋值
类型--------------------------------------------------------
- 数值变量int\double拥有同一父类为num
字符串变量string 能在${ }中直接引用变量
var str = "在字符串中加入变量${int}"
数组集合List可存入多种类型(因为list默认泛型为object,指定泛型后不能存入其他泛型)
List arr = new List();
arr.add("0");
arr.add(12);
特殊符号--------------------------------------------------------
- _ (下划线)前缀标识符会强制变为私有。
class User{
int _num;//私有变量
_User(){} //私有构造
User _newInstance(){}//私有方法
}
使用''' '''放入多行内容
'''
就像java中使用多行注释一样的效果
这里
可以
随意
换行
'''
类的构造函数--------------------------------------------------------
// 1、和java中构造函数一样
class User{
String name;
String psw;
User(String str1, String str2) {
name = str1;
psw = str2;
}
}
//2、如传入参数与定义参数相同,无法赋值步骤
class User{
String name;
String psw;
User(String name, String psw) {
name = name;
psw = psw;
}
}
//3、构造函数传值可选传
class User{
String name;
String psw;
User({String name, String psw}) {
name = name;
}
}
//4、创建指定传参的构造函数
class User{
String name;
String psw;
User.name(String name);
}
//5、在初始化构造中给变量赋值
class User{
String name;
String psw;
User.name(String name);
User.init():name="lisa", psw="123";
}
//6、在重定向构造中给变量改值
class User{
String name;
String psw;
User.name(String name);
User.init():name="lisa", psw="123";
User.forword():this.name("aya");
}
//7、常量构造函数
class User{
final String name;
final String psw;
User(String name, String psw) ;
}
//8、工厂模式构造函数
class User{
String name;
String psw;
User.instance(this.name);
static final Map<String, User> cacheMap = new Map<String, User>();
factory User(String name){
if(cacheMap.containsKey(name)){
return cacheMap[name];
} else {
cacheMap[name] = User.instance(name);
return cacheMap[name];
}
}
}
抽象类--------------------------------------------------------
- 使用 abstract 修饰类
abstract class Person{
String name;
int age;
Person(this.name, this.age);
void printName();
}
子类继承抽象类
class Student extends Person{
Student(String name, int age) : super(name, age);
@override
void printName() {
// TODO: implement printName
print("-----------------------------------" + name + age.toString());
}
}
创建子类,调用方法
void main(){
try{
Student student = new Student("list", 12);
student.printName();
//输出 -----------------------------------list12
}catch(e){
print(e);//输出-->异常:分母不可以为0
}
}
接口--------------------------------------------------------
- 创建接口
class TextListener{
void call(){
print("接口回调----------------------成功");
}
}
- 直接调用接口listener() = call()
void main(){
try{
TextListener listener = new TextListener();
listener();//输出: 接口回调----------------------成功
}catch(e){
print(e);//输出-->异常:分母不可以为0
}
}
- 或创建子类,实现接口
class TextWidget implements TextListener{
@override
void call() {
// TODO: implement textCall
print("接口回调----------------------成功");
}
}
调用子类
void main(){
try{
TextWidget text = new TextWidget();
text.call();
}catch(e){
print(e);//输出-->异常:分母不可以为0
}
}