面向对象】什么是面向对象编程

2020-03-31 13:43发布

3条回答

所有事物都可以抽象为对象

我们将对象的属性和行为(方法统一到一个“类”中;然后实例化类,即规定对象特定的属性和方法;这样具体的对象就能完成一系列不同的行为

-----------------已上是某度的解释,能看懂吗?我是没看懂,接下来用一个简单的例子描述----------------

问题: 洗衣机里面放有脏衣服,怎么洗干净?

面向过程的解决方法:

1、执行加洗衣粉方法;

2、执行加水方法;

3、执行洗衣服方法;

4、执行清洗方法;

5、 执行烘干方法;

以上就是将解决这个问题的过程拆成一个个方法(是没有对象去调用的),通过一个个方法的执行来解决问题。

面向对象的解决方法:

1、我先弄出两个对象:“洗衣机”对象和“人”对象

2、针对对象“洗衣机”加入一些属性和方法:“洗衣服方法”“清洗方法”、“烘干方法”

3、针对对象“人”加入属性和方法:“加洗衣粉方法”、“加水方法”

4、然后执行

人.加洗衣粉

人.加水

洗衣机.洗衣服

洗衣机.清洗

洗衣机.烘干

解决同一个问题 ,面向对象编程就是先抽象出对象,然后用对象执行方法的方式解决问题。




aijingda
2楼 · 2020-07-27 14:48

最简洁的解释也是比较官方的解释是,面向对象是一种 对现实世界理解和抽象的方法。但是这句话对于初学者来讲确实难以理解。

我把自己的理解用最通俗的语言解释一下,面向对象实际上就跟我们生活中很多情形一样,举例我们1000个人在同一家公司,对于公司来讲我们每个人都是一个对象,我们每个人所掌握的工作技能不同所以分工不同,我们各司其职在各自工作岗位上做好自己擅长的事情,所以公司能高效运作快速发展。面向对象就是这个道理,一个完整应用程序有很多个类,对于这个应用来讲每一个类都是一个对象,每一个类都只做一件事,单独实现一个功能,这么多个类组合一起就实现了一个功能完整的应用程序。这就是最通俗的解释了,不知道我说的你明白没。

如果有不明白的可以私信我。

想当熊猫
3楼 · 2020-08-17 10:05

以java为例


Java是一门面向对象的语言,面向对象的主要特点有封装,继承,多态


封装,意思就是把类的一些属性进行封装(“隐藏”),尽可能的避免直接访问对象一些属性,以保证其安全性,如果必须要访问这些属性,我们可以单独的提供一些接口(共有方法)进行访问,这样我们就可以避免因为直接访问属性信息造成的误操作。


继承,在我们的生活中也有很多的继承关系,比如子承父业,在Java中,我们也可以有继承的概念,但是继承只存在于父子类(接口)中,比如我们经常说的Dog类继承于Animal类,动物类Animal具有自己的一些属性,Dog属于Animal的一种,所以具有Animal的一些属性,但是Dog也有自己的一些特定属性,这时候如果我们单独在重新创建一个类Dog,就需要重新写一遍Animal类的属性,既费时又不好维护,这时候我们就可以使用继承,使用Dog类继承Animal类,这时候,Dog就包含了Animal类的一些属性,就不需要我们多次重复写这些属性了。


多态,即对于同一个对象,可能执行出不同的结果,比如上面的Animal类,我们创建他的两个子类,分别为Dog和Cat,Animal有个方法叫做public void jiaoSheng() { System.out.println( “动物叫声” ) ; } 两个子类分别重写了这个方法,实现形式Dog:public void jiaoSheng() { System.out.pringln( “狗叫声” ) ; }, Cat: public void jiaoSheng() { System.out.println( “猫叫声” ) ; },这时候我们可以创建一个Animal对象 animal = new Animal( );这时候我们调用animal.jiaoSheng() ;打印出 “动物叫声”;当animal = new Dog( ) ;的时候,我们调用animal.jiaoSheng() ; 打印出 “狗叫声”;当 animal = new Cat() ;的时候,我们调用animal.jiaoSheng() ; 打印出“猫叫声”;对于同一个对象animal我们调用同一个方法的时候,打印出的结果是不相同的,利用多态,我们就可以进行很多的扩展,而不需要过多的去修改原先的代码,可以保证代码的可维护性;从上面我们可以看得出来,如果要有多态,需要满足三个条件,第一个继承(或实现接口),第二个重写,也就是需要重写父类里面的方法,否则不会实现多态,对象调用的还是父类的方法,第三个父类引用指向子类对象,就像上面的animal他是一个Animal类的对象,但我们new的时候,创建的是子类Dog和Cat类的两个对象;

以下为源码示例:

public class Animal{

public void jiaoSheng() {

System.out.println(“动物叫声”);

}

}

public class Dog extends Animal{

@Override

public void jiaoSheng() {

System.out.println(“狗叫声”);

}

}

public class Cat extends Animal{

@Override

public void jiaoSheng() {

System.out.println(“猫叫声”);

}

}


相关问题推荐

  • 回答 15
    已采纳

    面向对象是相对面向过程而言面向对象和面向过程都是一种思想面向过程强调的是功能、行为面向对象:将功能封装进对象,强调具备了功能的对象面向对象是基于面向过程的

  • 回答 12

    众所周知,Java是一种面向对象性的语言。而面向对象,Obeject Oriented,是一种编程术语。面向对象是当今软件开发方法的主流方法之一,他是把数据以及对数据的操作放在一起,作为一个相互依存的整体,就是我们所说的对象。那么Java面向对象的特征又是什么?下...

  • 回答 16

    面向对象编程(Object-Oreinted Programming) 是一种编程范式。指在设计程序时大量运用类实例对象的方式。OOP一旦在项目中被运用,就成了时刻要考虑的东西。面向服务架构(Service-Oreinted Architecture) 是将软件设计成一组可互操作的服务的一套原则或方法...

  • 回答 6

    ① 修饰变量:常量  格式:   final 数据类型 常量名称 ② 修饰方法:不能被重写。   格式:   权限修饰符 static final 返回值类型 方法名称(参数){} ③ 修饰类: 不能被继承  格式:   final class 类名{     }...

没有解决我的问题,去提问