简单的类:三种语言
阅读 2.2k
词学流派
中有两大流派,一派为豪放派,另一派为婉约派。
音乐调性
中有大小调之分,大调色彩明亮开阔,小调色彩柔和幽暗。
程序设计
中有两大设计范性,一种是早期的面向过程
,一种是当今流行的面向对象
。对于面向对象而言,类是其中最重要的特性之一。
本篇选择了目前最热门的三大编程语言(Java、JavaScript、Python),分别用它们来实现一个简单的类。
目标
我们的目标是一个简单的Employee类,它有二个属性,三个方法,如下表:
属性 | 方法 |
---|---|
name, salary | getName, getSalay, raiseSalary |
Java
首先,我们来看Java,作为一门纯粹的面向对象编程语言,我们来看看用它来怎么实现:
class Employee {
// fields
private String name;
private double salary;
// constructor
public Employee(String n, double s) {
name = n;
salary = s;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public void raiseSalary(double byPercent) {
double raise = salary * byPercent / 100;
salary += raise;
}
}
在Java中,它的构造函数和类是同名的,且没有返回值。
JavaScript
JavaScript作为“混合型”(既支持面向过程,也支持面向对象)的编程语言,在ES6出现之前,创建类是通过函数的语法来实现的,这里使用ES6语法:
class Employee {
constructor(name, salary) {
this.name = name
this.salary = salary
}
getName() {
return this.name
}
getSalary() {
return this.salary
}
raiseSalary(byPercent) {
const raise = (this.salary * byPercent) / 100
this.salary += raise
}
}
JavaScript和Java都是类C语法,所以看上去很像。不过,JavaScript中用了constructor
关键字来标识构造函数,另外,代码中多了一些this
关键字。前面Java代码中其实是省略了this,但在JavaScript中是无法省略的。
Python
Python和JavaScript一样都是脚本语言,也都是“混合型”的,但Python语法并不是类C的语法:
class Employee():
def __init__(self, name, salary):
"""初始化属性"""
self.name = name
self.salary = salary
def getName(self):
return self.name
def getSalary(self):
return self.salary
def raiseSalary(self, byPercent):
temp = (self.salary * byPercent) / 100
self.salary += temp
Python使用__init__
来作为构造函数,且它使用的是self
,而不是this。因为raise
在Python中是关键字,所以无法作为变量名,这里改成了temp
。
小结
虽然只是一个简单的例子,通过这种对比的方式来观察、学习语言的特性,有两种好处:一是能够建立知识间的联系,加深理解;二是能增加学习的趣味性
。
最后编辑于: 2022-06-28