什么是面向对象(OOP)

java OOP(Obiect Oriented Programming)是计算机的一种编程架构,即面向对象编程。

那什么是面向对象呢?要想了解这个问题我们要先了解面向过程,这样对比我们就好理解了。

很早以前的编程是面向过程的,比如实现一个简单算术运算1+1 = 2,通过这个简单的算法就可以解决问题。但是随着时代的发展与进步,人们现在不满足现有的算法了,因为问题越来越复杂化,就比如某个班的学生成绩,学生的信息,健康信息等等等......对学生进行数据分析,这样就有了对象的概念。俗话说的好嘛:学Java的不缺对象,想要什么对象直接new一个,要什么对象有什么对象,一切事物皆对象。把具体的事物抽象出来,现实生活的事物以及关系,抽象成类,通过继承组合的方式把世间万物都容纳了。

而面向对象和面向过程就那一个简单的例子来解释,就是你想吃鱼,而你想吃鱼有两种解决方案:1、自己买鱼,自己褪鳞,自己切块,自己炖。

2、直接去楼下饭店去吃楼下鱼店老板做好的鱼。

这一个例子相信大家都很容易看明白,第一种呢就是过程居多,虽然最终也吃到了鱼,但从买鱼到吃鱼,中间的一系列步骤都是自己完成的,而第二种你想吃鱼到楼下直接吃做好的鱼,直接达到了想要的结果。第一种就是面向过程,第二种就是面向对象。

 而面向对象有什么优势吗?首先你不需要知道鱼是怎么做的,降低了代码的冗余,耦合,然后你想吃红烧鱼了,你可以直接跟老板说:老板换成红烧鱼,提高了可错误性也就是程序的维护性。

面向过程是具体化的,一步一步的进行编写的,需要一步步的分析解决问题,一步步的实现。

而面向对象则是模型化的,只需要抽出一个类,姑且把它当成一个盒子,而这个盒子是封闭的,里边拥有数据也拥有解决问题的方法,而你需要什么功能直接拿过来用就可以了,不用去关心他是怎么实现的、怎么执行的,只需要会用就行了。

面向对象的底层还是面向过程,把面向过程抽象成类,然后封装,方便我们使用的就是面向对象了。这个就是面向对象的三大特征之一:封装。

面向对象有三大特征:封装、继承、多态,这也是面向对象的核心思想。

上面说到的封装里有两个专业术语名词需要大家注意一下:类和对象。而类和对象的区别又是什么呢?

类是对象的模板,用于创作同一类型的对象,类确定对象的形式和行为,而对象是类的实例。举一个实例:把班级里的学生当成一个对象,学生的姓名、性别、年龄、身高就是这个学生(对象)的属性,而学生可以睡觉、学习、吃饭这些是学生(对象)的行为。也就是方法。

在定义完类的属性或方法后,就可以使用了,在使用过程中,如果没有给这些属性赋值,那么JVM系统将自动为这些属性赋默认值 数值类型的初始值为0,对于char类型,其值为 “\u0000”,显示为空字符,boolean类型的初始值为false,而引用类型(如String)的初始值为null虽然说每一个类的属性均会有默认值,但是为了避免错误,我们应当在使用这些属性之前,对每一个属性进行手工赋值。那当我们该如何使用呢?直接new一个吗?我们可以通过 类名  对象名=new 类名()来进行实例化对象,那你们知道“类名()”是什么东西吗?

其实“类名()”叫构造方法,而new 类名()通过“类名()”这个构造方法所指定的方式来生产一个对象,“类名()”构造方法由系统自动生成,所以我们才得以使用,而我们在写类是没有写方法,那这个方法是怎么被调用的呢?这个就用到了JVM,当这个类里没有构造方法时,JVM会自动创建一个无产构造方法;而当这个类里创建了构造方法时,JVM就不再为类自动创建无参构造方法。同样有无参构造就有有参构造,带参数的方法可以更灵活的让我们给属性赋值。

面向对象的特征:

1、封装
隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。用private 修饰 提供get 、 set方法。

2、继承

继承:提高代码复用性,说到继承就需要用到一个关键词extends,继承就是由已有的类创建新类的机制。用extends修饰前的类叫子类,修饰后边的类叫父类。

3、多态

多态:就是同一对象引用不同实例,调用相同方法,得到不同的结果,提高了程序的拓展性而继承就是多态的一种体现。方法的重写(Overriding)和重载(Overloading)也是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。而方法重写又叫方法的覆盖只能在子类中存在。
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值