什么是运算符重载(operator overloading)
在软件开发过程中,运算符重载(英语:operator overloading)是多态的一种。运算符重载通常只是一种语法糖,这种语法对语言的功能没有影响,但是更方便程序员使用。让程序更加简洁,有更高的可读性。
语法糖的现实意义
《Java核心技术36讲》
在日常工作过程中,我们读代码读机会往往超过写代码,软件工程是门协作的艺术
我们写的代码主要是给机器和人看的,给机器看的可以通过代码测试和实际运行来进行检验,给人的目前还没太好的评价方式。不过在设计一门语言的时候,方便阅读也是语言设计重点考虑的一个方面。
运算符重载在功能实现方面并没有任何影响,但是会给未来的自己和其他程序员带来极大的便利。
Dart语言的运算符重载
第一步创建个类
class Role{
final String name;
final int accessLevel;
const Role(this.name,this.accessLevel);
}
main()
{
print('hello operator overloading');
}
第二步 通过函数实现Role比较
class Role{
final String name;
final int accessLevel;
const Role(this.name,this.accessLevel);
}
main()
{
var adminRole =new Role('管理员',3);
var reporterRole = new Role('报告员',2);
var userRole= new Role('用户',1);
if(adminRole.accessLevel > reporterRole.accessLevel){
print("管理员的权限大于报告员");
}
if(reporterRole.accessLevel > userRole.accessLevel){
print("报告员的权限大于用户");
}
}
第三步 重载运算符
class Role {
final String name;
final int _accessLevel;
const Role(this.name, this._accessLevel);
bool operator >(Role Other) {
return this._accessLevel > Other._accessLevel;
}
bool operator <(Role Other) {
return this._accessLevel < Other._accessLevel;
}
}
main() {
var adminRole = new Role('管理员', 3);
var reporterRole = new Role('报告员', 2);
var userRole = new Role('用户', 1);
if (adminRole > reporterRole) {
print("管理员的权限大于报告员");
}
if (reporterRole > userRole) {
print("报告员的权限大于用户");
}
}