dart 替代java_Dart与Java的语法区别

1. 主函数

(1) 没有public static

(2) 命令参数List args

voidmain() {

}

2. 可以在class外定义变量,方法等

3. 没有public, private, protected关键字

4. 创建对象,new可选

5. 获取值${variableValue}, ${expression}

6. Class中属性默认public,若声明私有,只需在属性名前加_

classBicycle {intcadence;int _speed = 0;int get speed =>_speed;intgear;

Bicycle(this.cadence, this.gear);void applyBrake(intdecrement) {

_speed-=decrement;

}void speedUp(intincrement) {

_speed+=increment;

}

@override

String toString()=> 'Bicycle: $_speed mph';

}voidmain() {

var bike= Bicycle(2, 1);

print(bike);

}

7. getter/setter方法

//返回值类型/get/外部可访问属性/方法体

int get speed => _speed

//set/外部可访问属性(值)/方法体

set speed(int value) => _speed = value;

8. 未初始化的变量值均为null

9. 构造函数简化,避免重载

import 'dart:math';classRectangle {

Point origin;

num width;

num height;

Rectangle({this.origin = const Point(0, 0), this.width = 0, this.height = 0});

@override

String toString()=> 'Origin: (${origin.x}, ${origin.y}), width: $width, height: $height';

}voidmain() {

print(Rectangle(origin:const Point(3,4), width: 10, height: 20));

print(Rectangle(origin:const Point(10,20)));

print(Rectangle(width:20));

print(Rectangle());

}

10. 一个dart文件中可以定义多个class,也可以仅仅定义方法

//factory.dart

import 'shapes.dart';

Shape shapeFactory(String type){if(type == 'circle') return Circle(2);if(type == 'square') return Square(2);throw 'Can\'t create $type';

}

11. 字符串可用单引号或者双引号

12. 工厂构造函数 => 在抽象类中定义工厂函数,规定子类实例化方式

abstract classShape {//factory constructor

factory Shape(String type){if(type == 'circle') return Circle(10);if(type == 'square') return Square(10);throw 'can\'t create $type';

}

num get area;

}

13. Dart中没有interface关键字,每个类都可以做接口

import 'shapes.dart';class CircleMock implementsCircle {

num area;

num radius;

}

//A person. The implicit interface contains greet().

classPerson {//In the interface, but visible only in this library.

final_name;//Not in the interface, since this is a constructor.

Person(this._name);//In the interface.

String greet(String who) => 'Hi $who, I\'m $_name';

}//An implementation of the Person interface.

class Impostor implementsPerson {

@override

String get _name=> this._name;

@override

String greet(String who)=> 'Hi $who, do you know who I am?';

}//polymorphism

String greetBob(Person person) => person.greet('Bob');

main() {

print(greetBob(Person('chris')));

print(greetBob(Impostor()));

}

14. 同一对象级联操作

通过..符号可以在同一对象上级联操作。

querySelector('#confirm') //Get an object.

..text = 'Confirm' //Use its members.

..classes.add('important')

..onClick.listen((e)=> window.alert('Confirmed!'));

15. 函数无需声明可能抛出的异常类型

16. 捕获异常

try{//···

} on Exception catch(e) {

print('Exception details:\n $e');

}catch(e, s) {

print('Exception details:\n $e');

print('Stack trace:\n $s');

}

17. 在运行时,Dart保留泛型类型信息

var names = List();

names.addAll(['Seth', 'Kathy', 'Lars']);

print(names is List); //true

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值