2022-10-11

5.1面向对象和面向过程

面向过程是以过程为中心的,遇到问题时,想的是解决问题的步骤,然后用函数把步骤一一实现,最后再依次调用。面向过程更侧重于怎么做,以执行者的角度思考问题,比较适合解决小型问题或底层问题。

面向对象以对象为中心,遇到问题时,想的是需要哪些对象一起来解决问题,然后找到这些对象。并把它们组织在一起,然后取各家之所长来共同解决一个问题。面向对象更侧重于"谁来做",以指挥者的角度思考问题,比较适合解决中大型问题。

面向对象具有三大特性:封装,继承,多态

1,封装性封装是面向对象的核心思想,它有两层含义,一是指把对象的属性和行为看成是一个密不可分的整体,将这两者“封装”在一起(即封装在对象中);另外一层含义指“信息隐藏”,将不想让外界知道的信息隐藏起来。例如,驾校的学员学开车,只需要知道如何操作汽车,无需知道汽车内部是如何工作的。

1.1、封装的好处

提高代码的安全性

1.2、通过代码感受封装

        在以下的代码中,对于属性age来说,加了修饰符private,这样外界对它的访问就受到了限制,现在我还想加上其他的限制条件,但是在属性本身上没有办法再加了,所以我们通过定义方法来进行限制条件的添加。

2,继承性

继承性主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展。例如,有一个汽车类,该类描述了汽车的普通特性和功能。进一步再产生轿车类,而轿车类中不仅应该包含汽车的特性和功能,还应该增加轿车特有的功能,这时,可以让轿车类继承汽车类,在轿车类中单独添加轿车特性和方法就可以了。继承不仅增强了代码的复用性、提高开发效率,还降低了程序产生错误的可能性,为程序的维护以及扩展提供了便利。

继承是Java面向对象最显著的特征之一,继承是从已经存在的类(父类)上面派生出新的类(子类),新派生出的类拥有父类除了private权限之外的所有的属性和方法【当然子类可以通过构造器,或者是通过子类的对象调用get方法来进行操作父类私有的属性】。

2.1继承性的特点:

父类可以有多个子类,但是子类只允许只有一个父类。

可以进行多重继承。

子类继承了父类就会获取直接父类或者是间接父类的方法和属性。

所有的类都是project类的子类(除了个别的)。

减少了代码的冗余,便于功能性的扩展,同时体现了多态性。

子类可以设置自己特有的属性和方法。

父类中私有的方法在子类中依然可以获取到只不过受到封装性的影响不能直接访问。(可以在父类中进行创建对私有方法的封装方法,来间接调用)如:使用extends命令.

3.多态性

多态性指的是在一个类中定义的属性和方法被其它类继承后,它们可以具有不同的数据类型或表现出不同的行为,这使得同一个属性和方法在不同的类中具有不同的语义。例如,当听到“Cut” 这个单词时,理发师的行为是剪发,演员的行为表现是停止表演,不同的对象,所表现的行为是不一样的。多态的特性使程序更抽象、便捷,有助于开发人员设计程序时分组协同开发。

面向对象的三大特性是封装、继承、多态。

多态(polymorphic)的定义:父类引用变量可以指向子类对象,允许不同类的对象可以调用同一个方法,即同一个方法可以根据调用对象的不同而有不同的实现形式。

实现多态的技术是动态绑定(dynamic binding),是指在方法的执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。

多态的作用:消除类型之间的耦合(相互作用,相互影响)关系。

现实中,关于多态的例子有很多。比方说按下 ctrl+F 键这个动作,如果当前在如果当前在 Word 下弹出的就是 Word 的查找和替换功能;在 vscode中弹出的就是 vscode的查找和替换功能。同一个事件在不同的对象中被执行会产生不同的结果。

3.1、多态存在的三个必要条件

    1. 继承;

    2. 重写;

    3. 父类引用指向子类对象。

3.2、多态的特性

可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。

可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。

接口性(interface-ability)。多态是父类通过方法签名,向子类提供了一个共同接口,由子类来完成或者覆盖它而实现的。比如说定义一个父类Shape,规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和Sphere为了实现多态,就可以完成或者覆盖这两个接口方法。

5.2 类与对象

面向对象的世界观认为世界是由各种具有自己的运动规律和内部状态的对象所组成的,不同对象之间的相互作用和通信构成了完整的现实世界。使用面向对象的编程思想来分析问题需要从以下几个步骤思考。

根据问题需要,找到问题所针对的现实世界的实体。

从实体中寻找与解决问题相关的属性和功能,这些属性和功能就形成了概念世界的抽象实体。

把抽象的实体用计算机语言进行描述,形成计算机世界的类,即借助程序语言,把类构造成计算机能够识别和处理的数据结构。

类实例化成计算机世界中的对象,对象是计算机世界中解决问题的最终工具。

5.2.1 类与对象的关系

在面向对象中,为了做到让程序对事物的描述与事物在现实中的形态保持一致,面向对象思想中提出了两个概念,即类和对象。在Java程序中类和对象是最基本、最重要的单元。类表示某类群体的一些基本特征抽象,对象表示一个个具体的事物。类是抽象的,对象是具体的,类相当于创建对象的蓝图。面向对象的程序实现需要通过类创建对应的实例化对象,来对应客观世界中的实体。

例如,在现实生活中,学生就可以表示为一个类,而一个具体的学生,就可以称为对象。一个具体的学生会有自己的姓名和年龄等信息,这些信息在面向对象的概念中称为属性;学生可以看书和打篮球,而看书和打篮球这些行为在类中就称为方法。

类是蓝图 ,对象是具体

5.2.2、类与对象的关系

        (1)类是对一类事物的描述,是抽象的

        (2)对象是一类事物的实例,是具体的

        (3)类是对象的模板,对象是类的实体

5.2.3、类的定义

        (1)成员变量(属性)

                成员方法(行为)【要把static省掉,变成public void eat(){ }】

        (2)注意事项:

                A.成员变量是直接定义在类当中的,在方法的外面

                B.成员方法不要写static关键字

通常情况下,一个类并不能直接使用,需要根据一个类创建一个对象才能使用

        (1)导包:也就是指出需要使用的类在什么位置

                import 包名称 . 类名称;

                对于同一个包下的情况,可以省略导包语句不写

        (2)创建:格式

                类名称 对象名=new 类名称();

        (3)使用:分为两种情况:

                使用成员变量:对象名 . 成员变量名

                使用成员方法:对象名 .  成员方法名(参数)

        (4)注意事项:

                如果成员变量没有进行赋值那么将会有一个默认值,规则和数组一样

        (5)压栈:先来的方法在最下面后来的在上面

六,

        (1)可以使用对象类型作为方法的参数

        (2)可以使用对象类型作为方法的返回值

                        phone two=getphone()他的值从getone的返回值当中接收

                        当使用一个对象类型作为返回值时,返回值就是对象的地址值

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 一、配置环境变量 java_home jdk的目录path jdk下bin的目录class_path ...
    RobertLiu123阅读 183评论 0 2
  • C++ 拷贝构造函数 在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象 如果在类中没有定义拷贝构造...
    忻恆阅读 107评论 0 0
  • 面向对象 其他 面向对象的三大特性 封装:把属性和方法添加到类里面的操作就叫封装,我们根据具体需求还可以在封装的时...
    Xrikis阅读 166评论 0 1
  • 1.MySQL如何进行慢SQL优化? 参考答案 思路: 通过慢查询日志去寻找哪些 SQL 执行效率低 使用 exp...
    丛小丛阅读 166评论 0 1
  • Day1 Java语言平台的版本 -Java SE(标准版) 为开发普通桌面和商务程序提供解决方案 是Ja...
    找到目标的秃头少年阅读 380评论 0 0