精华内容
下载资源
问答
  • 面向对象的编程面向对象的应用是检验你对现实实际物体和及其关系的抽象能力。在实际编程过程,你的能力并不是你掌握了多少新的技术,而是对你当前问题的认识的深度,当你理解的足够深的时候,你的框架就...

           在面向对象的编程中,面向对象的应用是检验你对现实中实际物体和及其关系的抽象能力。在实际编程过程中,你的能力并不是你掌握了多少新的技术,而是对你当前问题的认识的深度,当你理解的足够深的时候,你的框架就出来了,解决方法自然就有了。

    面向对象程序设计的三大特征:

    1. 封装性
    2. 继承性
    3. 多态性

    下面以一个经典的例子来说明面向对象编程思想,或许说的不是很准确,仅供参考。

    场景假设:

            一个主人养了猫和狗,猫和狗都有自己爱吃的东西,主人在喂它们的时候,如果既要判断是猫还是狗,再判断他们分别爱吃什么,就显得很麻烦。如果主人养了很多种动物,这样的重复判断,就会浪费很多时间。有什么办法,能让主人拿到一种食物就知道这是哪种动物的,就好了。

    第一步:明确解决的问题

        让主人拿到一种食物就知道这是哪种动物的

    第二步:获取该例子中的对象

         对象包括:一个主人,主人养的猫,主人养的狗,猫喜欢吃的食物(假设为鱼),狗喜欢吃的食物(假设为骨头)

    第三步:从对象中抽象出类

    1.    一个主人可以抽象出主人类Master
    2.    由主人养的猫可以抽象出类Cat
    3.    由主人养的狗可以抽象出类Dog
    4.    因为类和类可以提炼出动物类Animal,因此Cat和Dog继承Animal
    5.    假设猫喜欢吃的食物为鱼,因此可以提炼出类Fish
    6.    假设狗喜欢吃的食物为骨头,因此可以提炼出骨头类Bone
    7.    因为鱼类和骨头类可以提炼出食物类Food

    第三步:创建实体类

          类是由属性和动作组成的。

      ① 首先创建Animal类。属性为年龄和名字;动作为叫cry和吃eat。

    // 动物类
    class Animal {
        int age;
        String name;
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        // 动物类里面有叫和吃两个方法
        public void cry() {
            System.out.println("我不知道叫什么");
        }
    
        public void eat() {
            System.out.println("我不知道吃什么");
        }
    }

    ② 分别创建猫类和狗类,因为狗类和猫类是继承自动物类,所以需要重写动物类的cry方法和eat方法。(体现了面向对象编程的继承特点)

    // 狗类继承于动物类
    class Dog extends Animal {
        // 覆盖(重写)方法
        public void cry() {
            System.out.println("旺旺");
        }
    
        public void eat() {
            System.out.println("我是狗,我爱吃骨头");
        }
    }
    
    // 猫类继承于动物类
    class Cat extends Animal {
        // 覆盖(重写)方法
        public void cry() {
            System.out.println("喵喵");
        }
    
        public void eat() {
            System.out.println("我是猫,我爱吃鱼");
        }
    }

    ③  创建食物类

    // 食物类
    class Food {
    
        String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        // 食物类里面让它有一个方法
        public void showName() {
    
        }
    }

    ④ 鱼类和骨头类继承自食物类

    // 鱼(食物的一种)继承于食物
    class Fish extends Food {
        public void showName() {
            System.out.println("食物:鱼");
        }
    }
    
    // 骨头(食物的一种)继承于食物
    class Bone extends Food {
        public void showName() {
            System.out.println("食物:骨头");
        }
    }

    ⑤ 创建主人类。

    在该场景中,根据主人给动物喂东西吃提炼出Master类的一个方法为feed,并且可以确定该方法的两个参数动物Animal和食物Food,既给什么动物吃什么食物。因此代码如下:

    // 主人类 存在一种喂食方法
    class Master {
        // 给动物喂食物,如果没有多态,他要写给猫喂食和给狗喂食两个方法
        // 有了多态,以后即使再来好多动物,用这一个函数就可以了
        public void feed(Animal an, Food f) {
            an.eat();
            f.showName();
    
        }
    }

    ⑥ 方法调用

    public class DuoTaiDemo {
    
        public static void main(String args[]) {
    
            Master master = new Master();
            master.feed(new Dog(), new Bone());
    
            // hin方便,可以再试试
            master.feed(new Cat(), new Fish());
    
        }
    }

    ⑦ 结果为:

    着重说明一下,方法调用的代码:

           Master的feed方法的参数是Animal和Food。因为Dog类和Cat类是继承于Animal类,Bone类和Fish类是继承于Food类。所以可以这么写master.feed(new Dog(), new Bone());这里面体现了多态特征。所谓多态,就是指一个引用(类型)在不同的情况下的多种状态。也可以理解为,多态是指通过指向父类的指针,来调用在不同子类中实现的方法。该例子中利用Animal的引用调取子类Cat类和Dog类的方法去执行具体的操作,例如,Cat类喜欢吃鱼,而Dog类喜欢吃骨头。

    备注:该博客中的代码是来自于https://www.cnblogs.com/1693977889zz/p/8296595.html

     

    展开全文
  • 面向对象生活中世界

    千次阅读 2016-12-15 17:13:26
    面向对象是怎么来的,是由面向过程演变而来,所以我们要对面向过程有一个简单的了解,最常见的面向过程理解就是想用有什么就创建一个什么来用,没有太多的全面思考,而面向对象的出现就是为了修复面向过程的种种不足...

    面向对象是怎么来的,是由面向过程演变而来,所以我们要对面向过程有一个简单的了解,最常见的面向过程理解就是想用有什么就自己去制造一个什么来用,没有太多的全面思考,而面向对象的出现就是为了修复面向过程的种种不足面向对象的出现后,相比面向过程有了更多的思考,考虑了如何复用,如何扩展起来好维护,如何降低代码的耦合度,如何提高一个对象该做的事情单一职责,所以说面向对象体现出来的思想,主要包含了,高内聚低耦合,可扩展性,可复用性,等等…..,

    既然有了面向对象编程思想就会产生各种设计模式,每当理解一种设计模式,会发现自己好渺小,会发现面向对象思想,OOP, 是多么多么的强大,难道你以为面向对象思想的好处就仅仅如此吗?

    这样想的话那就错了,面向对象思想不仅仅在软件编程领域,在生活中的各个领域都是存在的,以下就用生活中的故事来举例,我们抛开程序世界,不编程,不在软件领域,我们就在生活中,既然在生活中,那生活中的各种案例就是面向对象思想的体现:


    故事一(史蒸乡找工作面试)

    人物:史蒸乡
    事物:史蒸乡毕业后,去软件公司面试,信心澎湃,面试官问了一个问题:说就以你现在来面试的情景,来描述一下你面向对象的理解?

    史蒸乡说:我先来说说面向过程吧:如果老板是一个懂编程的人,签约了一个合同,接手了一个项目,老板本人是懂编程的,老板一个人亲自来完成,结果 辛辛苦苦干了三年终于完成了,结果由于干的时间太长项目就黄了,这是面向过程的方式在完成的,发现有很多不足之处,所以就演变成了面向对象思想,例如:老板需要一个会Java编程的人,来做这个项目,所以老板需要招牌懂Java编程的人,结果我来面试了,我就是老板需要的那个对象,我这个对象就具有Java**编程属性和方法,所以老板找对象找我,就找对人了,new 史蒸乡(); 创建一个史蒸乡,史蒸乡就有编程的属性和方法,能帮老板完成工作,所以我现在来面试,面试官您就是在用面向对象**的思想招聘人。
    这里写图片描述


    故事二(做菜与带菜)

    人物:肚紫腾

    事物:肚紫腾在一家软件科技公司上班,每天都是带菜带饭来公司吃,这就需要他自己每天买菜做菜做饭,比较花费时间,有一天他在公司加班太晚,回去后就没有时间做菜做饭了,所以第二天来公司,就叫了外卖,最后他突然明白,自己买菜做菜做饭:就是属于面向过程方式,要自己亲手去做,而叫外卖就属于面向对象方式,叫外卖不需要关心外卖的菜是怎么做出来的,只需要关心 new 外卖(); 拿到外卖这个对象,就可以吃饭了,细节不需要关心。,而自己做菜做饭细节都知道。
    这里写图片描述


    故事三(汽车零部件专卖)

    人物:刘奋

    事物:刘奋在一家汽车零部件销售,这几天客户需要的配件总是很难找到,因为他是这样找的,例如:他要找方向盘配件,找完所有的方向盘配件之后,才在确定是哪个车型的,最后他仔细想了想,为何不去先确定车型在去找关于这个车型的配件呢,于是他找配件比之前要快多了,也有规律了。
    我们来分析一下:面向过程方式:(这个方向盘属于雪佛兰的,这个方向盘是属于奔驰的,这个方向盘属于一汽大众的),而最后刘奋演变成了面向对象方式:(奔驰.方向盘,一汽大众.方向盘,雪佛兰.方向盘)。
    这里写图片描述


    以上案例还有很多不足之处,只是来模拟一下场景。

    谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
    刘德利CSDN博客, http://blog.csdn.net/u011967006

    展开全文
  • 面向对象-生活例子

    千次阅读 2013-06-24 21:38:30
    ----------------------看到这篇觉得很逗,也容易理解1、你面向对象就是面向你老婆  你跟她说“去倒茶”,她就会把茶到好;你说“老婆.衣服.颜色=红”,她就自己去把红色衣服换上。当你老婆做饭时,她会产生一个...
    ---------------------- android培训java培训、期待与您交流! ----------------------


    看到这篇觉得很逗,也容易理解

    1、你面向对象就是面向你老婆

        你跟她说“去倒茶”,她就会把茶到好;你说“老婆.衣服.颜色=红”,她就自己去把红色衣服换上。当你老婆做饭时,她会产生一个“帮忙”事件,当然,你可以选择处理或者不处理这个事件:p。你可以让老婆生Baby,这就是继承;老婆不会告诉你她有多少钱,这就是封装;老婆高兴了一个样,不高兴一个样,这就是“多态”……

    2、你老婆面向对象就是你老婆面向你

    她跟你说“去倒茶”,你就会把茶到好;她说“老公.香烟.Enable=false”,你就会乖乖把香烟戒掉。当你给老婆做饭时,你会产生一个“帮忙”事件,当然,她可以选择处理或者不处理这个事件:p。你老婆要是不想生Baby,那你就没得被继承;你存私房钱,这就是封装;你外面泡妞对这个一个样,对那个一个样,这就是“多态”,老婆让你打扫家里卫生,你把所有房间垃圾都清理一遍,这叫循环遍历,找到的垃圾装到垃圾带里,这叫装箱,把垃圾丢进了楼下垃圾箱里,这叫垃圾清理,忽然发现你不小心把自己包私房钱的报纸也丢了进去,赶紧去垃圾堆翻出来,这叫拆箱,找了半天没找到,发现垃圾已经被清扫工给收走了,啥呆呆的站在垃圾箱旁边,这叫挂起 …
    --------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
    展开全文
  • 用简单的例子解释什么是面向对象

    千次阅读 多人点赞 2019-01-23 15:51:47
    提起面向对象,肯定都会先想到三大特性:封装,继承,多态。那这三大特性具体怎么理解呢?可以先在脑子里过一下。 如题,举个栗子吧: 加入我们现在要把大象装进冰箱,面向过程的做法:打开冰箱门,把大象装进去...

    什么是面向对象OO:可以先看下 https://www.jianshu.com/p/224d8fc4d0f0
    提起面向对象,肯定都会先想到三大特性:封装,继承,多态。那这三大特性具体怎么理解呢?可以先在脑子里过一下。
    如题,举个栗子吧:
    在这里插入图片描述
    假如我们接到一个需求,需要把大象装进冰箱里!
    面向过程的做法:打开冰箱门,把大象装进去,关上冰箱门。这是一个过程,我们会把这个过程拆分为三个小步骤并且去想办法实现他们。
    面向对象的做法:冰箱调用开门的方法开门,大象调用移动位置的方法进入冰箱,冰箱调用关门方法把门关上。这种是把这个过程里的冰箱和大象抽象出来,冰箱是一个对象,大象是一个对象。冰箱拥有开门,关门的方法,大象拥有移动位置的方法。他们各自处理各自的事情,我们不用关心冰箱怎么开门关门,大象怎么把自己塞进去,我们只用告诉冰箱,嘿,我现在要你把大象装进去,你装好了告诉我

    看起来好像面向过程更加简单,确实在一些简单的逻辑上,确实是面向过程更加简单一点,但是当你面对是一系列复杂的模块和功能或者在逻辑发生更改的时候。各司其职的面向对象思想变会将很多复杂的逻辑简单化。

    拿上面那个栗子来说,冰箱,大象,分别处理各自的事情,降低了逻辑之间的耦合性。我们在做业务处理时不必关心冰箱是怎么开门关门,大象怎么移动位置的,我们只需要只要他们有这两个动作,通知他们去做这些动作完成我们的业务逻辑就可以了。
    那你可能要问了,冰箱怎么开门关门,大象怎么移动位置不还要我们去写吗?是的,没错,面向对象编程需要在前期进行大量的准备工作。但是这些准备工作,在后面业务逻辑越来越复杂的时候,就显得尤为重要,因为在后期业务逻辑极其复杂的时候,如果我要添加功能,你不可能每次做事之前都理一下之前的逻辑,看看是不是会不会影响到后面。

    上面说的,冰箱开门关门,大象移动位置其实就是三大特性里的封装了,为冰箱和大象封装了属于他们的各自的方法。

    现在我们需求变了,我们要把大象放进笼子里,如果用面向过程的做法,我们需要把之前装冰箱的方法重写一遍,变成成装笼子。也太麻烦了。
    用OO的思想,我们需要一个笼子的对象,笼子也同样有开门和关门两个动作,跟冰箱很像啊,这个时候三大特性之一的继承就登场了,我们只需要用笼子继承冰箱,再用笼子替换掉之前代码里的冰箱就可以了如下图,笼子也有了开门和关门两个动作,而制冷属于冰箱的私有的属性,笼子无法继承到。
    在这里插入图片描述
    多态 简单的理解起来,冰箱可以有很多种不同牌子的冰箱,他们可能是双门的,多开门的各种。但是他们都属于冰箱,拥有冰箱的基本功能,同时他们又有各自不同的特色功能。 关于更详细的多态解释,可以参考 传送门
    我这里对于三大特性说的可能不太细,详情参见:https://blog.csdn.net/xiaouncle/article/details/53301523
    以上理解如果有问题,欢迎大佬指点!

    展开全文
  • 所谓一切万物皆对象,所以生活中就所有的事物都可看作对象,就拿我来说吧,记得第一次去应聘java开发实习生,当初是大三暑假,面试官就问我:解释下你理解面向对象,由于当时没有准备,所以回答的也很简单
  • 个人理解面向对象

    2019-06-27 20:20:37
    和很多广义的面向对象说法对比而言,我这里首先采用的是一种比较狭义的理解   一方面是因为鄙人确实技术及理论水平有限,一方面也是为了让很多初学者更容易接受,从而由浅入深逐渐了解乃至于衍生出自己的理解 面向...
  • 面向对象经典小例子

    千次阅读 2013-11-24 00:32:46
    面向对象编程--经典例子 Java面向对象  Java语言是面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为...
  • 谈谈我对面向对象以及类与对象的理解

    千次阅读 多人点赞 2018-02-26 22:43:12
    对于刚接触JAVA或者其他面向对象编程语言的朋友们来说,可能一开始都很难理解面向对象的概念以及类和对象的关系。面向对象首先,一言不和先百度,得到如下定义:一切事物皆对象,通过面向对象的方式,将现实世界的...
  • Python面向对象理解

    万次阅读 多人点赞 2018-06-18 18:44:18
    一,初始面向对象.面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。优点是:极大的降低了写程序的复杂度,只需要...
  • 简述对面向对象思想的理解

    千次阅读 2018-01-10 16:38:14
    面向对象思想得由来是,起初我们的需求单一或者特别简单时,可以一步一步的去进行操作,并且效率也不是很低,可是随着需求进一步的提高,所需要实现的功能也就越多,我们发现需要面对的每一个步骤很麻烦,所以就开始...
  • 面向过程程序设计计算机程序=数据结构+算法。这是大学 C 语言教材里非常经典的一句话。这也道出了计算机程序的本质,即通过对一定的数据结构用相应的算法(逻辑)进行处理从而解决用户的问题。这便是 C 之类的过程式...
  • 如何理解面向对象(一)

    千次阅读 多人点赞 2018-07-20 10:03:19
    先声明一下,在下其实是一只非常非常大只的菜鸟。秉承菜鸟上路的精神,所以尽量不...为了更好的理解什么是面向对象面向对象和面向过程有什么区别,我举一个生活中的小例子来对比一下两者的区别:开车去超市。 面...
  • 当试图通过面向过程解决问题时,我们的关注点在于问题解决的流程,重在这个过程的控制,需要用大量的模块(模块化的思想源自于硬件,在C语言是函数)将大问题拆解,程序员通过控制模块的执行顺序以解决问题。...
  • Java面向对象系统理解

    千次阅读 多人点赞 2019-03-13 17:54:56
    1.对面向对象理解 面向过程 面向过程,核心是过程二字。过程即解决问题的步骤,设计一条流水线,机械式的思维方式。它考虑的是实际地实现,针对一个特定的问题去思考其解决步骤。学过C语言的同学就知道,用C语言...
  • 面向对象 一、类和对象 1. 类和对象的关系 1.1 类 1.1.1 类的理解 类是对现实生活中一类具有共同属性和行为的事物的抽象 类是对象的数据类型,类是具有相同属性和行为的一组对象的集合 简单理解:类就是对现实事物...
  • c#面向对象小结

    千次阅读 2017-12-17 19:19:06
    最近发现一个问题,对于好多新手而言,尤其是刚开始接触面向对象编程时,都觉得对象是什么鬼?完全不能理解嘛! 那么我们今天就来说说对象是什么吧!平时我们在日常生活中说对象,就表示男(女)朋友的关系对吧!...
  • 什么是面向对象

    万次阅读 多人点赞 2019-09-09 16:54:50
    我们开始接触Java这门语言后,就有人告诉我们这是一门面向对象的语言。说的最多的是new个对象,其实并不知道什么是对象。以为对象就是一个class(类),并不觉得有什么特殊。直到很久之后,面试官问到什么是OOP,...
  • java面向对象

    万次阅读 多人点赞 2018-08-21 16:51:59
    包括面向对象概念、类与对象的关系、封装、构造函数、this关键字、static关键字、单例设计模式、继承、多态、内部类、异常、包等java基础知识。 1、面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是...
  • python 面向对象全面详解

    万次阅读 多人点赞 2019-01-12 14:25:23
    一、对面向对象理解 1、面向对象的编程---object oriented programming 2、python面向对象的重要术语: 3、函数和面向对象编程的区别 二、封装、继承、多态 1、封装(Encapsulation) 2、继承(Inheritance...
  • 继承是面向对象编程的基本概念之一
  • JAVA 面向对象与面向过程区别 什么是面向过程 概述:自上而下的编程模式 将我们所需要的问题(需求)拆分成一个个步骤,把每个步骤使用函数进行实现,再根据解决问题的步骤逻辑将函数依次调用即可。 可以通俗的理解...
  • 理解面向对象

    千次阅读 2016-06-01 22:25:05
    JAVA语言是面向对象的程序设计语言. 它有三种特征: 继承、封装、多态. 这三个概念我们后面会 一一详解. 面向对象 JAVA程序的最小程序单位是类, 不管多大的JAVA程序都是由一个一个的类(class)组成. 这些类可以...
  • 什么是面向对象?与面向过程区别在哪?用通俗的话语解答,不要理论性的专业术语,最好是拿生活中的熟知的事物去类比解释!!!多谢~
  • 面向对象和面向过程

    万次阅读 多人点赞 2019-03-07 22:19:30
    什么是面向对象? 如果面试的时候问面向对象和面向过程的区别,就用Action、Service、 Dao去答。 1.什么是面向过程 仔细思考一下,我们在学习和工作,当我们去实现某项功能或 完成某项任务时,是不是会...
  • 什么是面向对象,以及什么是类和对象

    千次阅读 多人点赞 2019-08-11 19:04:04
    什么是面向对象,以及什么是类和对象 ​ 1.1面向过程与面向对象的区别 ​ 面向对象是一种现在最为流行的程序设计方法 。将面向过程与面向对象进行比较。 ​ 首先这两个种都是一种编程思维, 在一些简单的动作...
  • 在学习Java的过程,我觉得面向对象是我遇到的第二个难题(第一个就是配置环境变量,哈哈)。我相信也有很多同胞也在这里被绊脚了吧,今天的话也就是其实也只是作为笔记写的这篇博客。 一、面向对象 这里也就不讲...
  • 说明提到面向对象,总是离不开几个重要的术语:多态(Polymorphism),继承(Inheritance)和封装(Encapsulation)。Python也是一种支持OOP的动态语言,本文将简单阐述Python对面向对象的支持。在讨论Python的OOP...
  • 面向对象的概念介绍

    万次阅读 多人点赞 2018-08-24 09:02:18
    这一篇主要是介绍面向对象的各种概念性的东西,并不会说具体的代码怎样写,所以可以用一种轻松的心态去看。 一、面向过程和面向对象 面向对象是相对于面向过程的一种编程方式。 面向过程的编程方式由来已久,我刚...
  • 面向对象编程及其三大特性

    万次阅读 2019-06-11 11:39:23
    编程语言分为面向过程编程、函数式编程和面向对象编程。其实python就是一种面向对象编程,那么我们先了解一下它们的特点和优缺点以及它们的区别是什么。 面向过程编程:“面向过程”(Procedure Oriented)是一种以...
  • Java面向对象与代码编写

    千次阅读 2019-08-25 08:41:52
    Java面向对象与代码编写 面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别,作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,169
精华内容 10,867
关键字:

从生活中的例子理解面向对象