java基础篇01-面向对象

一、面向对象和面向过程比较

        面向过程:自顶而下的编程模式

                把问题分解成一个一个步骤,每个步骤用函数实现,一次调用即可。案例:冒泡排序

        面向对象:将事物高度抽象化的编程模式

               将问题分解成一个一个步骤,对每个步骤进行相应的抽象,形成对象,通过不同对象之间的调用,组合解决问题。

二、面向对象三大基本特征和五大基本原则

1、三大基本特征:

     1.1 封装

      1.2 继承

            继承的根本原因是能复用;实现的根本原因是需要定义一个标准。

      1.3 多态(动态多态)

            同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。

            必要的三个条件:

              a.有类继承或者接口实现

              b.子类要重写父类的方法

              c.父类的引用指向子类的对象

             有一种说法是多态分动态多态和静态多态,认为java中的函数重载(方法名一样,但是参数不一样)是一种静态多态。

      补充:重写VS重载

               重载是一个编译期的概念,重写是一个运行期的概念。

               重载是在编译期就决定使用哪个方法,重写是在运行期才引用变量所指向的实际对象的类型来掉员工方法。

2、五大基本原则

      2.1 单一职责原则

           一个类只干一件事

      2.2 开放封闭原则

            开放扩展,封闭修改

       2.3 Liskov替换原则

             子类可以替换基类,但是基类不一定能替换子类。如果违反了Liskov替换原则,则一定违反开放封闭原则。

       2.4 依赖倒置原则

             依赖于抽象

      2.5 接口隔离原则

            使用多个小的专门的接口,而不要使用一个大的总接口。

            分离手段:

                a. 委托分离。通过一个新的类型来委托客户的请求,隔离客户和接口的直接依赖,但是回增加系统的开销。

                b.多重继承分离。通过接口多继承来实现客户的需求。

三、平台无关性

       在计算机上的运行不受平台的约束,一次编译,到处执行。

       对于java开发者来说,Java减少了开发和部署到多个平台的成本和时间。真正的做到一次编译,到处执行。

1、编译原理基础

       主要角色有Java语言规范、Class文件、Java虚拟机(JVM)等。

              Java语言规范:通过规定Java语言中基本数据类型的取值范围和行为。

              Class文件:所有Java文件要编译成统一的Class文件。

              Java虚拟机:通过Java虚拟机将Class文件转成对应平台的二进制文件等。

      Java的平台无关性是建立在Java虚拟机的平台有关性基础之上的,是以为Java虚拟机屏蔽了底层操作系统和硬件的差异。

       编译流程:

2、语言无关性

      真正和虚拟机交互的是Clss文件,虚拟机并不关心字节码是那种语言编辑而来的,所以现在已经出现Java之外打批在JVM上运行的语言。

现在加上java有10中语言可以在JVM上运行:Kotlin、Groovy(Apache)、Scala、Jruby、Jython、Fantom、Clojure、Rhino、Ceylon、Java

建议学习:Groovy、Scala、Kotlin

三、Java中的值传递(java中没有引用传递)

     此结果未完全理解,故只列出名词定义。

1、形参和实参

       形式参数:在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。

       实际参数:再调用函数时,主调函数和被调函数之间有数据传递关系,在主调函数中调用一个函数时,函数名后面括号中的参数成为“实际参数”。

2、值传递,引用传递

       值传递:在调用函数时将实际参数复制一份传递到函数中,在函数中对参数进行修改不会影响实际参数。

       引用传递:在调用函数时将实际参数的地址直接传递到函数中,在函数中对参数进行修改将影响实际参数。

       

 

       共享对象传递:特殊的值传递

       求值策略:

              变成语言中需要进行方法间的参数传递,这个传递的策略叫做求值策略。

        

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值