📅  最后修改于: 2023-12-03 14:40:37.320000             🧑  作者: Mango
Dart是一种先进的面向对象编程语言,它支持所有常见的面向对象编程概念,例如继承,多态,封装,抽象类和接口。在Dart中,类是面向对象编程的核心概念之一。本文将介绍Dart中的类,包括类的定义,实例化、继承及其它相关的概念。
在Dart中,可以使用 class
关键字来定义类。类由以下元素组成:
下面是一个最简单的Dart类的例子:
class Person {
String name;
int age;
void sayHello() {
print('Hello!');
}
}
在上面的代码中,我们定义了一个 Person
类,它有两个成员变量 name
和 age
,以及一个方法 sayHello
。
类的成员变量是该类的一个属性,通过类的实例对象可以访问。在Dart中,成员变量使用关键字 var
或 final
或 const
声明。
例如,下面的代码中 name
和 age
是类 Person
的成员变量:
class Person {
String name;
int age;
}
在Dart中,如果一个成员变量只有 get
方法,而没有 set
方法,则它是只读的。这种情况下在声明变量时需要使用关键字 final
或 const
。
在Dart中,每个类都有至少一个构造函数。如果没有显式声明构造函数,则默认构造函数和该类名称相同。如果你需要自定义构造函数,则可以使用类名称和圆括号声明。
下面是一个自定义构造函数的例子:
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
}
在上面的代码中,我们声明了一个自定义构造函数,它需要传入两个参数 name
和 age
,并使用 this
关键字引用当前实例的变量。
请注意,构造函数的名称必须与类名相同,不像方法可以有任意名称。如果你需要有多个构造函数,则可以使用 factory
关键字。
在Dart中,方法是一个具有一系列操作的函数。类的方法与成员变量一样,通过类的实例对象调用。可以在类的主体中声明方法。
以下是一个简单的类展示如何声明和使用方法:
class Person {
String name;
int age;
void sayHello() {
print('Hello!');
}
void sayNameAndAge() {
print('My name is $name, and I am $age years old.');
}
}
void main() {
var person = Person();
person.name = 'Tom';
person.age = 21;
person.sayHello();
person.sayNameAndAge();
}
在上述代码中,我们创建了一个 Person
类对象,并使用它的方法输出了一些信息。
在Dart中,当我们要使用类时,需要创建类的实例对象。可以使用 new
关键字来创建实例。
例如,在上面的示例中,我们使用以下代码来创建一个 Person
的实例:
var person = Person();
这将创建一个变量 person
并初始化为一个 Person
类的实例对象。可以使用在构造函数中设置的初始值、setter以及方法对类实例的属性进行修改。
Dart中的继承和其他面向对象语言非常相似。可以使用 extends
关键字来实现继承。
以下是一个简单的示例:
class Animal {
void speak() {
print('Animal is speaking!');
}
}
class Dog extends Animal {
void speak() {
print('Dog is barking!');
}
}
void main() {
var animal = Animal();
var dog = Dog();
animal.speak();
dog.speak();
}
在上述代码中,我们创建了两个类 Animal
和 Dog
,Dog
继承了 Animal
。使用 extends
关键字使 Dog
类继承了 Animal
类的所有属性和方法,包括 speak()
方法。Dog
类还可以重新定义 speak()
方法以便自定义行为。
到此,我们已经介绍了Dart类的基本概念,包括成员变量、方法、构造函数、实例化和继承等内容。如果你对Dart类有更多兴趣,请参考官方文档以获取更多信息。
class Person {
String name;
int age;
void sayHello() {
print('Hello!');
}
Person(String name, int age) {
this.name = name;
this.age = age;
}
}
void main() {
var person = Person('Tom', 21);
person.sayHello();
print('My name is ${person.name}, and I am ${person.age} years old.');
}