C语言的结构体和java的类异同

结构体跟类的概念确实有点像,尤其是跟C++中的类。
先说相同点:
(1)结构体和类都可以实现对于数据的封装,比如将一辆车定义为由多个部分组成,如车身、车轮、车灯等。
(2)结构体和类都是可以嵌套的,比如
C/C++ code
?
1
2
3
4
5
struct  A{
struct  B{
int  a;
};
};

Java code
?
1
2
3
4
class  A{
class  B{
}
}

但是不同在于:
(1)C语言中结构体中只可以定义成员变量,如果你说你在结构体中可以定义成员函数和构造函数,那应该是C++而不是C语言,C语言作为面向过程的语言是要将数据和算法进行分离的。Java的类除了可以封装成员变量,还可以封装成员函数,也就是对于成员变量的操作。
(2)结构体中的成员变量都是可以直接访问的,而类则可以通过声明public、protected、private或者不加权限修饰符来进行访问权限的控制。另外类是可以继承的,子类可以通过继承获得父类的一些属性或者方法,这是结构体所不具有的。
(3)结构体仅仅是封装数据用的,也可以说仅仅是自定义的一种变量类型;而java作为一种纯面向对象语言,将所有东西都封装在类中,包括程序执行入口的Main方法。
(4)要单纯说Java的类相对于C语言结构体的优势,倒不如宏观上看面向对象编程思想和面向过程编程思想的区别,这是两种不同的思维方式,楼主可以看一下比较经典的斐波那契数列的面向过程解题方法和面向对象解题方法。

  • 11
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值