从C转到JAVA学习路之struct与class对比(转)
转自:http://blog.csdn.net/andywxf01/article/details/53506549
JAVA里最牛B的最基本的就是类,而C语言中的struct也可以定义自己的数据结构, 它们有很多相似的也有区别。在我看来它们之间最大的不同是struct里不支持方法,class里支持。
#include<stdio.h>
float Getlen(float r)//求周长
{
return 3.14*r*r;
}
float Getrare(float r)//求面积
{
return *3.14*r;
}
typedef struct s_circle
{
float r;
float (*getlen)(float);
float (*getrare)(float);
}Circle;
void main()
{
Circle cl;
cl.getlen = Getlen;//关键点就在这里,将函数与类型关联起来
cl.getrare = Getrare;
printf("%f %f",cl.getlen(), cl.getrare());
}
我定义了一个Circle类型,里面有3个成员,一个普通变量,2个函数指针。在main()里面我将cl的函数指针与上面两个函数关联起来了,在使用的时候就直接调用,发现没有跟JAVA中的类非常相似了,都可以直接用方法了。
class Circle
{
double r;
double getlen(double r)//求周长
{
return 3.14*r*r;
}
double getrare(double r)//求面积
{
return 2*3.14*r;
}
} public class example {
public static void main(String[] args) {
Circle cl = new Circle();
System.out.println(cl.getlen(1)+" "+cl.getrare(2));
}
}
大家对比一下,都要定义成员,都要定义2个函数,使用时也是直接调用方法,是不是并没有什么区别嘛。
typedef struct s_student
{
int age;
char name[];
char sex[];
char number[];//学号
int grade;//年级
}Student;
typedef struct s_work
{
int age;
char name[];
char sex[];
char company[];//公司
char type[]; //工种
}Work;
大家可以发现age, name, sex重复了,如果再定义老师,农民等类型。发现还是要重复写这3个成员,因为是人都会有这3个成员。所以可以提取出来一个类型,如下
typedef struct s_human
{
int age;
char name[];
char sex[];
}Human;
typedef struct s_student
{
Human info;
char number[];//学号
int grade;//年级
}Student;
typedef struct s_work
{
Human info;
char company[];//公司
char type[]; //工种
}Work;
这样以后不管定义多少种身份,都可以用Human这个基本信息了。
从C转到JAVA学习路之struct与class对比(转)的更多相关文章
- 从C转到JAVA学习路之基本知识对比(转)
转自:http://blog.csdn.net/andywxf01/article/details/53502615 我一直在用C开发,想转到Java时最容易想到的事就是把C里写的代码和功能用JAVA ...
- (转)如何学习Java技术?谈Java学习之路
51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...
- Java学习之路:不走弯路,就是捷径
1.如何学习程序设计? JAVA是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于JAVA,对C++等其他程序设计语言也一样管用.有编程高手认为,JAVA也好C也好没什么分别,拿来就用.为 ...
- 新篇章之我的java学习之路下
昨天写下了人生的第一篇博客,今天接着写我的java学习之路有关开发及框架的学习过程. 想要学好java语言,只学习一些java的基本语法对实际开发中的用处还是不大的,所以我们还要掌握一些有关javaW ...
- #Java学习之路——基础阶段二(第一篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- 【分享】Java学习之路:不走弯路,就是捷径
1.如何学习程序设计? JAVA是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于JAVA,对C++等其他程序设计语言也一样管用.有编程高手认为,JAVA也好C也好没什么分别,拿来就用.为 ...
- java学习之路之javaSE基础2
java学习之路之javaSE基础2 所有的代码都是引用他人写的. 1.逻辑运算符 //&,|,^,! //int x = 10; //5 < x < 15 //x > 5 ...
- java学习之路之javaSE基础1
<h2>java学习之路之javaSE基础1</h2> <div> ###01.01_计算机基础知识(计算机概述)(了解)* A:什么是计算机?计算机在生活中的应用 ...
- Java学习之路(转)
Java学习之路(书籍推荐) 一.基础类 1.<Thinking in java>(阅读2遍),入门第一位是建立正确的概念 2.<Core Java>这本书更贴近实践,更多 ...
随机推荐
- python多线程实现多任务
#转载请联系 1.什么是线程? 进程是操作系统分配程序执行资源的单位,而线程是进程的一个实体,是CPU调度和分配的单位.一个进程肯定有一个主线程,我们可以在一个进程里创建多个线程来实现多任务. --- ...
- Delphi指针详解
Delphi指针详解2007-12-04 06:08:57| 分类: DLL学习 阅读91 评论0 字号:大中小 订阅 大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用 ...
- 腾讯云 python3+Django
!!!注意:如果已经包含了python3.5,跳过安装3.6版本. !!!本人安装完3.6后,pip3安装的包始终没法安装到3.6目录下,只能安装到3.5目录下 1,安装python3.6(用编译的方 ...
- 51nod 1240 莫比乌斯函数【数论+莫比乌斯函数】
1240 莫比乌斯函数 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先使用 ...
- B - ACM小组的古怪象棋 【地图型BFS+特殊方向】
ACM小组的Samsara和Staginner对中国象棋特别感兴趣,尤其对马(可能是因为这个棋子的走法比较多吧)的使用进行深入研究.今天他们又在 构思一个古怪的棋局:假如Samsara只有一个马了,而 ...
- 训练指南 UVA - 11478(最短路BellmanFord+ 二分+ 差分约束)
layout: post title: 训练指南 UVA - 11478(最短路BellmanFord+ 二分+ 差分约束) author: "luowentaoaa" catal ...
- hdu2665(主席树模板题)
hdu2665 题意 求区间第 k 小. 分析 参考 这类题目做法挺多的,例如 划分树. 这里使用主席树再写一发,不得不说主席树相比而言要好写的多,比起普通线段树,主席树就是复用了线段树共有的信息. ...
- 学习LSM(Linux security module)之一:解读yama
最近打算写一个基于LSM的安全模块,发现国内现有的资料极少.因此打算自己琢磨一下.大致的学习路线如下: 由易至难使用并阅读两到三个安全模块->参照阅读模块自己实现一个安全模块->在自己实现 ...
- 3、Flask实战第3天:url_for使用
我们之前是通过url来找到对应的视图函数 / => hello_world 那么url_for则是通过视图函数找到url hello world => / 演示如下 .. ...
- decode and CASE
CASE