java呢,我们都知道,他是一个面向对象的语言,但不知道你是不是和我有一样的疑问:对象是什么?说实话,学了一学期的java,我直到今天,才开始将java和面向对象这两个词组联系起来,期望我的回答能给你一些启迪。
万物皆对象
相信兄弟们对这句话不陌生吧,万物皆对象!
任何一个事物都可以是一对象。对象呢,他有很多不同的东西。
你并不是每个属性都要去刻画的。
比如说“表”,他有形状,有大小,有时针和分针,
有功能:记录时间。
而我们要做的是将这些东西抽象出来,
只将我们需要的那部分抽象出来。
我们需要记录时间,现在我们定义一个类来实现它的功能:
假设我们只需要他记录时间的功能,
那我们就可以把不必要的因素都去除了(形状,大小),
只留下时针,分针,秒针,来记录时间。
public class Clock {
private int seconds;
private int minutes;
private int hours;
//getter&&setter
}
这个就是特别简单的抽象。
抽象,封装
关于抽象,我理解最深,认为最重要的一点就是:有选择地抽象,你不必吧一个事物的所有行为和属性都抽象出来,但是你必须将你需要的抽象出来,独立出来。
面向对象,顾名思义。他是为对象服务的。
我看过一个小文章,开发人员其实是在造一个肯德基店,它将所有的功能和细节进行封装,将各个功能进行划分:做汉堡,做冰激淋,做炸薯条等。
每个功能不相干,但是彼此组合起来,就成了一个肯德基店。而顾客即我们所谓的对象,他们知道我们各个功能的名称,但不知道具体实现过程,这是封装。
也就是说我们将各个功能抽象封装起来,形成一个个的功能板块,对顾客来说,顾客只需要根据菜单选择food,等待,就可以得到自己想要的食物。而我们要做的将原材料加工成品,包装送给客户。
关系数据库
上了一学期的数据库课程,一直不怎么重视这门oracle课,但是最近我突然发现关系数据库建立表的过程和java抽象的过程非常接近,或者说一样,唯一不同的是java抽象的过程不只抽象属性,还抽象方法。
比如建立一个学生类,我们只抽象属性,得到了这几个属性:学号,姓名,年龄,出生日期,入学时间。那同样的,对关系数据库来说,我们同样可以创建一张类似的学生表。
姓 名 | 年 龄 | 学 号 | 出 生 日 期 | 入 学 时 间 |
---|---|---|---|---|
小气鬼 | 250 | 10001 | 2015-01-24 | 2020-09-01 |
欢迎探讨!感谢阅读。