C/C++、Java、Go、Python总结对比10-类的总结对比-类的简单

系统 1249 0

现代编程语言基本上都是面向对象的语言,而这些语言基本上都会使用类体现该思想。本节主要介绍各个语言类的简单定义及语法,复杂的内容后续慢慢介绍。

c的写法

c没有类的定义,可以使用结构体间接实现,这里不做介绍。

c/c++的写法

定义头文件person.h

            
              //定义头文件
class CPerson {
public:  //定义可以被任意实体访问变量
    int age;  //声明成员变量
    char name[3];

    int getAge();  //声明成员函数
    void setAge(int sAge);
    char* getName();
    void setName(char sName[3]);
}; 

            
          

在main函数中调用类

            
              //引入头文件
#include "person.h"
//初始化成员函数
int CPerson::getAge() {
    return age;
}
void CPerson::setAge(int sAge) {
    age = sAge;
}
char* CPerson::getName() {
    return name;
}

void CPerson::setName(char sName[3]) {
    strcpy(name, sName);
}

int main() {
    int iRet = -1;
    CPerson p;  //声明一个对象
    p.setAge(20);  //给对象的成员变量赋值
    char pName[3] = "a";
    p.setName(pName);
    cout << "age is " << p.getAge() << endl;
    cout << "name is " << p.getName() << endl;
}

            
          

java的写法

定义JPerson.java文件

            
              //定义类
public class JPerson {
    public int age;  //声明成员变量
    public String name;

    public void setAge(int age) {  //声明成员函数
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

            
          

调用类

            
              public class JPersonMain {
    public static void main(String[] args) {
        JPerson jPerson = new JPerson();  //初始化类
        jPerson.setAge(20);  //为成员变量赋值
        jPerson.setName("a");
        System.out.println(String.valueOf(jPerson.getAge()));  //获得成员变量值
        System.out.println(String.valueOf(jPerson.getName()));
    }
}

            
          

go的写法

            
              func main() {
	classDemo1()
}

//go中没有类的概念,但是可以通过将struct和方法进行结合实现类的功能
type GPerson struct {
	Age int
	Name string
}

//定义方法,注意此处和函数的不同
func (p GPerson)printAge()  {
	fmt.Println(p.Age)
}

func (p GPerson)printName()  {
	fmt.Println(p.Name)
}

func classDemo1()  {
	p := GPerson{20, "a"}  //初始化struct,并为变量赋值
	p.printAge()  //调用相关的方法
	p.printName()
}

            
          

python的写法

            
               # 定义类
class Person:
    def __init__(self, name, age):  # 声明成员变量
        self.name = name
        self.age = age

    def pring_name_age(self):  # 定义成员函数
        print(self.age)
        print(self.name)


if __name__ == "__main__":
    p = Person("a", 20)  # 声明并初始化类
    p.pring_name_age()  # 调用类方法

            
          

总结对比:

1. c和go没有类的概念。go可以使用结构体和方向实现类的功能;

2. c++、java和python都可以实现类,过程较为类似。类的变量作用范围以及成员变量的默认值等细节后面章节讨论。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论