面向对象的三大特征简要说明 面向对象的基本理论类和对象
我们先介绍基本的面向对象概念,具体的使用语法也就是定义的关键字后面会介绍 拉勾IT课小编为大家分解
前面我们简单介绍了面向对象和面向过程的思维方式不同,简单理解就是面向过程方式主要关心的是流程化,而面向对象方式主要是找参与者,也就是找类,类是面向对象中最基本的概念,是面向对象分析OOA和面向对象设计OOD的基石,另一个基石是对象。
类和对象其实分不开的关系,就像鸡和蛋的关系,无法具体知道哪个先产生。只是我们设计类的时候先定义类,所以我们先介绍类的概念
一、类类是对象的模板,但是什么对象呢?这个我们留个花絮,在介绍对象之前我们先给类一个通俗的定义吧!
那就是多个相似事物的通称,是不是还有点难理解,那我就一个词一个词的解释一下。
多个这个词容易理解,就是有很多事物;单个事物不能形成类;
相似代表有相同的特征,但是也有不同的地方,比如: 张继科和林丹,他俩必定有相同的特征,都有鼻子眼睛嘴等等。但是也有不同的地方,比如他俩的身高体重等不一定完全相同, 他俩还有各自的功能,张继科打乒乓球的,林丹打羽毛球的。
这就是我们说相似而不是相同;
通称也比较好理解,还拿张继科和林丹举例子,他俩都可以统称为人类,但是不能说统称为张继科,张继科那就是具体的人了。按照上面的理解知道什么是类了吧。奥迪和宝马是不是一类呢,他俩都属于车,所以就是一个车类。
再比如波音和空机都统称为飞机,所以就是一个飞机类。我们再想一个问题,飞机和车是不是一个类呢,它俩都有发动机,可以统称为交通工具。说到这就有答案了,飞机和车是一个交通工具类。
说到这你可能就想到了所有的事物最终都可以有大的统称。那为啥还分那么多类呢,就设计一个大类呗。这就失去了面向对象思想的一个好处,可扩展性,举一个例子,如果只设计一个交通工具类,原先的需求就有飞机和汽车。
某天需要添加个轮船类呢,就要修改类的结构。反之只需要添加轮船类就好。通过上面的介绍,都知道类到底是个啥,设计类的时候按照具体的需求就好,需求和观察角度不同,设计出来的类可能都不同。
比如:设计一个交通工具类和设计一个汽车类都不一样。
我们上面是拿文字大概介绍的,拿张继科和林丹举例子他俩都有静态特性,是一个名词,比如年龄、性别等等。也还有动态的功能,是一个动词,比如都能打球、训练等等。
张继科和林丹不是类,是具体的个体,所以就需要抽取共同的部分抽取成人类。
可是对应到面向对象中咋设计一个类呢,分别用属性和方法表示,属性就是指静态特性,方法就是指动态的功能;简单判断标准就是名词是属性,动词是方法。我们用一个程序看一下。
/** * 人类 */public class Person { //属性,人具有的特征 String name; //名字 int age; //年龄 float height; //身高 float weight; //体重 String gender; //性别 //方法,人具有的功能 //方法可以访问属性 public String getName() { return name; } public void playBall(){ System.out.println("打球!"); } public void train(){ System.out.println("训练!"); }} 上面的代码写出来我们并不能运行,一个类不能做事情,就比如一个人类能打球吗,显然不能,都是某个人能打球,所以我们需要一个类的实体来做事情。
二、对象
接下来我们该介绍什么是对象了,上面我们说过类是对象的模板,类都知道是什么了。对应的模板都知道是什么吧,一个使物体成固定型状的模具;
比如做蛋糕,你可以拿一个模具,然后把做好的面糊倒在里面放入入微波炉制作,制作完成之后模具中就有了一个具体的蛋糕。这个蛋糕和模具的形状基本就是相同的。
对应到面向对象思想中,这个做出来的每个蛋糕就是一个个对象,这每个蛋糕放在一起就是一个统称蛋糕,这其实就是一个蛋糕类。
蛋糕类是抽象的,也就是没有具体的实体,只是通过这个蛋糕模板可以知道大概的形状而已,通过微波炉制作的过程对应程序中就是实例化。
另外对象和类其实是相对的概念,上面谈过观察角度不同,类的设计不同,这样的话对应的对象也不同。比如以车作为参照标准来说,车是一个类,具体的奥迪就是一个车的对象,它是一个车的具体品牌。
ok说到这我们要说一下类和对象的联系:现实对象(归纳概括)--->现实类(抽象模拟)--->软件类(实例化)--->软件对象--->程序
现实类和对象就是我们现实世界能看到的东西吗,软件类和软件对象就是软件设计和运行中产生的
我们对上面的类进行一下实例化,创建具体的对象,先用图展示一下
/** * 创建一个张继科的对象 */public class TestPerson { public static void main(String[] args) { //先创建一个具体的空人,也就是空对象 Person person=new Person(); person.name="张继科"; //设置名字为张继科 person.play();//调用人类的方法,这个名字为张继科在打球 }}
通过上面的介绍也就可以理解说:类是对象的抽象,对象是类的实例化了。那抽象是什么呢?抽象其实就是把像的部分抽取出来 ,而抽象的作用就是:隔离关注点,降低复杂度。就比如设计交通工具类,不划分类别的话,都集中在一起的话,那么我们的程序得多复杂凌乱。
- 01-16五代十国主要帝王 五代十国后唐历代帝王
- 05-17洁牙器怎么选?200元的洁牙器自带高清内窥镜
- 12-02定频电磁振动台,电动振动台非线性电磁力的最新研究
- 01-08韩国人性电影看完震惊你的三观 一部题材大胆的韩国电影
- 10-18女性按摩的禁忌:女性身上,2个地方
- 01-29被褥潮湿怎么治疗?被褥潮湿怎么办生活小事见技巧
- 05-01茂名市北淦庆武堂武馆,热烈祝贺茂名林伟龙武馆
- 04-08魔兽世界战网注册:魔兽世界全新战网起号
- 10-25intellijidea最常用配置详细图解,IntelliJ,IDEA不好用那是因为没掌握这些技巧
- 01-18适合走清纯甜美风路线适合的发型 纯欲风碰上禁欲系发型太绝了
- 03-01怎么都是笨鸟先飞呢?真的是笨鸟先飞
- 03-11四方美术馆的展览 这家商场里的美术馆也太美了吧
- 12-23oppo小米华为手机对比 华为OPPO小米四千价位同台较量
- 03-05电信一百兆和两百兆区别大吗?电信三千兆,是什么
- 06-14香港tvb8金曲榜颁奖礼罗志祥:柯淑勤击败杨丞琳夺视后
- 12-01新概念英语第1册第6课:天天新概念,新概念英语第一册Lesson6
热门
推荐
- 1千牛卖家中心消费者保障服务在哪120
- 2岩石的英语单词130
- 3公司放假对外通知321
- 412.4全国法制宣传日宣传活动实施方案397
- 5关于酒驾交通安全知识113
- 6在庆祝老人节图片展剪彩仪式上的讲话294
- 7护林员学习班开班精彩演讲458
- 8推诿怎样造句333