main(List<String> args) {
sayHello("name");
sayHello2("name", 18, 1.88);
sayHello2("name", 18);
sayHello3("name", age: 20, height: 1.88);
sayHello3("name", age: 20);//参数可省略
}
复制代码
void sayHello(String name) {
print(name);
}
复制代码
只有可选参数能够给默认值markdown
[] 里面可省略ide
void sayHello2(String name, [int age = 10, double height = 1.0]) {
}
复制代码
{} 里可省略,但调用必须是标签参数调用函数
void sayHello3(String name, {int age = 20, double height = 2.0}) {
}
复制代码
main(List<String> args) {
var p = Person("Joho", 30);
var p2 = Person("Joho", 30);
var p3 = Person.withNameAndAge("Joho", 18);
var map = {'name': 'kobe', 'age': 30};
var p4 = Person.fromMap(map);
}
class Person {
String name;
int age;
double height;
}
复制代码
Person(String name, int age) {
this.name = name;
this.age = age;
}
复制代码
Person(this.name, this.age);
复制代码
Person.withNameAndAge(String name, int age) {
this.name = name;
this.age = age;
}
复制代码
Person.fromMap(Map<String, Object> map) {
this.name = map["name"];
this.age = map["age"];
}
复制代码
class Person {
final String name;
final int age;
//类的初始化列表
Person(this.name) : age = 10;
//或
Person(this.name, {this.age = 10});
}
复制代码
关键字: extendsui
class Person {
String name;
int age;
Person(this.name, this.age);
}
class Student extends Person {
String id;
// 继承父类 name、age 属性,调用 super 构造方法
Student(this.id, String name, int age) : super(name, age);
}
复制代码
关键字: abstractthis
abstract class Shape {
double area();
String getInfo() {
return "shape";
}
}
class Square extends Shape {
@override
double area() {
return 100.0;
}
@override
String getInfo() {
return "square";
}
}
复制代码
总结
spa
为何 Map 能够实例化
var map = Map();
map["name"] = "Joho";
print(map);
复制代码
Map 是抽象类,但却能够实例化,缘由在于 external factory Map();
code
external 关键字 能够把 声明和 实现分离,需配合注解 @patch 实现
orm
@patch 能够针对不一样平台进行实现
继承
见: map_patch.dart接口
dart 没有 interface、protocol 这样的关键字表示接口,可是默认的全部类都至关于接口,dart 不支持多继承
在开发中,一般使用 abstract 用于给别人实现的类声明为抽象类
复制代码
main(List<String> args) {
final sm = SuperMan();
sm.run();
sm.fly();
}
abstract class Runner {
run();
}
abstract class Flyer {
fly();
}
class SuperMan implements Runner, Flyer {
@override
run() {
print("SuperMan is running");
}
@override
fly() {
print("SuperMan is flying");
}
}
复制代码
在经过 implements 实现某个类时,类中全部的方法都必须被从新实现,可是某些时候,一个类可能但愿直接复用以前类的实现方案,这就须要借助于 mixin 关键字,
借助于 mixin 关键字定义一个类,借助于 with 关键字来进行混入。
main(List<String> args) {
final sw = SuperWoman();
sw.run();
sw.fly();
}
mixin Runner {
run();
}
mixin Flyer {
fly();
}
// implements 的方式必需要对其中的方法进行 onverride
class SuperMan implements Runner, Flyer {
@override
run() {}
@override
fly() {}
}
// with 关键字 则不须要 override
class SuperWoman with Runner, Flyer {
run() {
print("Superwoman is running");
}
fly() {
print("Superwoman is flying");
}
}
复制代码