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

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

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都可以实现类,过程较为类似。类的变量作用范围以及成员变量的默认值等细节后面章节讨论。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值