大概在一个多月之前,我写过一篇同样的关于我对面向对象的理解,当时是用c语言写的一个代码片段,一个没有实现任何功能的只是为了解释面向对象的理解的一个代码片段
大致是如此的一个代码片段:
typedef struct {
char *name;
int age;
} Person;
typedef struct {
Person stu;
char *ID;
char * dept;
} Student;
void initPerson(char **name,int age)
{
//initing code
}
//void initStudent()
void main()
{
Person man;
//initPerson
Student st;
initStudent();
/* 此处务必初始化,初始化的过程就相当于面向对象编程中,关键字的 new 的过程,在面向对象编程中,假如没有 new 出一块内存空间,是会报空指针错误的,而在纯 c 语言中,没有初始化的变量是会随机的指向一块内存空间的,这显然是相当危险的,而且这还不属于编译时错误,也就是说可能有一些编译器在编译时不会报错,甚至连警告都没有* /
// 调用
st.stu->name;
st->ID;
st->dept;
}
这就是当时我写的代码,一个用纯 c 语言的诠释面向对象的特性的一段代码,用来模拟封装和继承,至于多态嘛,这个涉及的东西就比较复杂了,并不是几行简单的代码就能够搞定的。
而今天,我就要步入正题,进一步写写我对面向对象的个人理解。
那么首先要搞清楚,什么是对象呢?
学习对象的时候,老师经常跟我们说,“万物皆对象“,对象是什么呢?个人认为,我们面对的最高级的对象其实是人,是用户,我们编程就是为了给用户提供更好的体验,或者说实现更多的功能,充分发挥互联网的强大的性能。这就是面向对象的编程思想,面向对象可以不用考虑使用了多大的内存,只要是硬件支持,想怎么用就怎么使用,这就是我对面向对象的理解。
打个比方说,我们要实现老板下发的一个项目,其中一个功能需要用到最新的技术,而这技术自己还不会,但是项目迫在眉睫,完不成任务就有被解雇的危险,因此我们通过面向对象来完成它。我们这时候会在百度搜索这个项目的相关信息,当我们发现百度其实有一个类似的项目实现了相同的功能之后,就会把百度里的代码直接拷贝过来,来完成我们的项目。我们使用别人提供的类来完成我们自己的项目,这就是一种面向对象,当我们把拷贝过来的代码每一行都弄懂,并尝试修改它,这就是面向过程编程。java是被号称为纯面向对象的编程语言,Java把所有要实现的功能斗殴封装成了类,我们只需要继承或者引用类就好了。这就是面向对象编程,就像我们从百度直接把代码靠过来用,本质上都一样的。
大致是如此的一个代码片段:
typedef struct {
char *name;
int age;
} Person;
typedef struct {
Person stu;
char *ID;
char * dept;
} Student;
void initPerson(char **name,int age)
{
//initing code
}
//void initStudent()
void main()
{
Person man;
//initPerson
Student st;
initStudent();
/* 此处务必初始化,初始化的过程就相当于面向对象编程中,关键字的 new 的过程,在面向对象编程中,假如没有 new 出一块内存空间,是会报空指针错误的,而在纯 c 语言中,没有初始化的变量是会随机的指向一块内存空间的,这显然是相当危险的,而且这还不属于编译时错误,也就是说可能有一些编译器在编译时不会报错,甚至连警告都没有* /
// 调用
st.stu->name;
st->ID;
st->dept;
}
这就是当时我写的代码,一个用纯 c 语言的诠释面向对象的特性的一段代码,用来模拟封装和继承,至于多态嘛,这个涉及的东西就比较复杂了,并不是几行简单的代码就能够搞定的。
而今天,我就要步入正题,进一步写写我对面向对象的个人理解。
那么首先要搞清楚,什么是对象呢?
学习对象的时候,老师经常跟我们说,“万物皆对象“,对象是什么呢?个人认为,我们面对的最高级的对象其实是人,是用户,我们编程就是为了给用户提供更好的体验,或者说实现更多的功能,充分发挥互联网的强大的性能。这就是面向对象的编程思想,面向对象可以不用考虑使用了多大的内存,只要是硬件支持,想怎么用就怎么使用,这就是我对面向对象的理解。
打个比方说,我们要实现老板下发的一个项目,其中一个功能需要用到最新的技术,而这技术自己还不会,但是项目迫在眉睫,完不成任务就有被解雇的危险,因此我们通过面向对象来完成它。我们这时候会在百度搜索这个项目的相关信息,当我们发现百度其实有一个类似的项目实现了相同的功能之后,就会把百度里的代码直接拷贝过来,来完成我们的项目。我们使用别人提供的类来完成我们自己的项目,这就是一种面向对象,当我们把拷贝过来的代码每一行都弄懂,并尝试修改它,这就是面向过程编程。java是被号称为纯面向对象的编程语言,Java把所有要实现的功能斗殴封装成了类,我们只需要继承或者引用类就好了。这就是面向对象编程,就像我们从百度直接把代码靠过来用,本质上都一样的。