简单的类:三种语言

阅读 2.2k

词学流派中有两大流派,一派为豪放派,另一派为婉约派

音乐调性中有大小调之分,大调色彩明亮开阔,小调色彩柔和幽暗。

程序设计中有两大设计范性,一种是早期的面向过程,一种是当今流行的面向对象对于面向对象而言,是其中最重要的特性之一。

本篇选择了目前最热门的三大编程语言(Java、JavaScript、Python),分别用它们来实现一个简单的类

目标

我们的目标是一个简单的Employee类,它有二个属性,三个方法,如下表:

属性方法
name, salarygetName, 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

评论(0条)

(必填)
复制成功