import 'dart:core';
class Point {
final num? x,y;
//static final Point point = const Point(0,0);
const Point(this.x,this.y); //常量构造函数
}
void main() {
var p1 = const Point(1, 1);
print('${p1.x},${p1.y}');
var p2 = const Point(1,1);
print('${p2.x},${p2.y}');
var p3 = const Point(0,0);
print('${p3.x},${p3.y}');
print(identical(p1,p2));
print(identical(p1,p3));
}
这段Dart代码定义了一个名为Point的类,并且展示了如何创建这个类的实例以及如何打印它的属性。以下是代码的详细解释:
导入核心库:
import ‘dart:core’;:这是Dart语言的核心库,它提供了最基础的功能,比如基本的数据类型和集合。
定义Point类:
class Point:这是类的定义。
final num? x, y;:这是类中的两个属性,分别表示点的横坐标和纵坐标。final关键字表示这些属性一旦被初始化就不能再被更改。?表示这些属性可以是null。
const Point(this.x, this.y);:这是一个常量构造函数,用于创建Point类的实例。由于使用了const关键字,这个构造函数只能创建常量实例,即创建后实例的值不能再被更改。
main函数:
void main():这是Dart程序的入口点。
var p1 = const Point(1, 1);:创建了一个Point类的常量实例p1,并给它赋值了横坐标1和纵坐标1。
print(‘
p
1.
x
,
{p1.x},
p1.x,{p1.y}’);:打印p1实例的坐标。
var p2 = const Point(1,1);:创建了另一个Point类的常量实例p2,并给它赋值了横坐标1和纵坐标1。
print(‘
p
2.
x
,
{p2.x},
p2.x,{p2.y}’);:打印p2实例的坐标。
var p3 = const Point(0,0);:创建了另一个Point类的常量实例p3,并给它赋值了横坐标0和纵坐标0。
print(‘
p
3.
x
,
{p3.x},
p3.x,{p3.y}’);:打印p3实例的坐标。
print(identical(p1,p2));:检查p1和p2是否是同一个实例。由于它们都是常量实例,它们在内存中是唯一的,所以这个表达式将输出false。
print(identical(p1,p3));:检查p1和p3是否是同一个实例。由于它们都是常量实例,并且它们的坐标值相同,所以这个表达式将输出true。