Dart语言面向对象程序设计
类
面像对象的基本特征
1.抽象
在面向对象的程序设计方法中,各种事物称为“对象”,将同一事物的共同特征概括出来的过程称为抽象,抽象包括数据抽象和过程抽象。
数据抽象:例如,人有国籍、肤色、姓名、性别、年龄等共同特征。
过程抽象:例如,人会吃饭、走路、讲话、思考等共同行为。
2.封装
封装就是在对某一类事物完成抽象后,通过某种语法形式,将数据(属性)与操作数据(行为)的源代码进行有机的结合,形成“类”。
封装可以将对象一部分属性和方法隐藏起来。
class Person{
String name;//属性
String nation;
void say(){};//行为,又称为方法
void eat(){};
}
3.继承
继承指的是两种或者两种以上的类之间的联系与区别,是后者延续前者的某些方面的特点,对象的一个新类可以从现有的原始类中派生,这个过程称为继承,新类称为子类或派生类,原始类称为新类的父类或基类。
例如,中国人是人的子类、英国人也是人的子类,不管中国人还是英国人都有国籍、肤色、姓名、性别、年龄等属性,也都会吃饭、说话、走路和思考等行为,但他们的吃饭方式、讲话语言都是不一样的。
class Chinese extends Person{
}
class British extends Person{
}
4.多态
多态是指当不同的多个对象同时收到同一个完全相同的消息之后,所表现出来的动作是各不相同的,具有多种形态。
例如,中国人、英国人都有吃饭的方法,但中国人用筷子吃饭、英国人用刀叉吃饭。
多态通常用覆盖或重载的方式实现。覆盖是指在子类中重新定义父类某种特写的方法。重载是指允许类中存在多个同名的方法,而这些方法的参数表不同(参数个数不同、参数类型不同或两者都不同)。
class Chinese extends Person{
@override //覆写,重写
void eat(){
print('筷子');
}
}
class British extends Person{
@override //覆写,重写
void eat(){
print('刀叉');
}
}
类的定义和使用
1.类的定义
class 类名 {
属性的定义;
...
方法的定义;
...
}
在定义类时,如果没有给成员变量提供初始值,则创建对象时成员变量的初始值默认为null;如果指定了成员变量的类内初始值,则创建对象时类内初始值将用于初始该成员变量。
定义一个Person类,包含姓名、性别、年龄、国籍4个属性和1个说话方法:
class Person{
String name; //姓名
String sex; //性别
int age; //年龄
String nation; //国籍
void say(){
print('会说$(this.nation)语言');
}
}
构造方法
类的构造方法(构造函数)是类的一种特殊的成员方法,它会在每次创建类的新对象时执行。
构造方法不会返回任何类型,也不会返回void;
构造方法可用于为某些成员变量设置初始值。
Dart语言中的构造方法包括默认构造方法