Java初级笔记_面向对象1

      ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
   Java基础知识
一、方法
   A:为什么要有方法
        假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹(植物大战僵尸)。发射炮弹的动作需要编写100行的代码,在每次实现发射炮弹的地方都需要重复地编写这100行代码,这样程序会变得很臃肿,可读性也非常差。为了解决代码重复编写的问题,可以将发射炮弹的代码提取出来放在一个{}中,并为这段代码起个名字,这样在每次发射炮弹的地方通过这个名字来调用发射炮弹的代码就可以了。上述过程中,所提取出来的代码可以被看作是程序中定义的一个方法,程序在需要发射炮弹时调用该方法即可。
     B:概述
        方法就是完成特定功能的代码块。在很多语言中都有函数的定义,但是在咱们JAVA语言中,我们将其称之为方法。
 说白了,java的方法类似于其他语言的函数
     C:方法的格式
 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 ....){
方法体;
return 返回值;
}
      D:方法的格式详细说明
  1): 修饰符   比较多,后面会详细介绍。目前使用  public static
  2): 返回值类型   用于限定返回值的数据类型
  3): 方法名   就是一个名称,它的存在是为了方便我们调用方法
  4): 参数类型   限定调用方法时传入参数的数据类型
  5): 参数名  是一个变量,接收调用方法时传入的参数.这个参数其实有一个专业的名词,被称之为形式参数,它  的作用是用来接收实际参数的.
  6): 方法体   完成功能的代码
  7): return   结束方法以及返回方法指定类型的值 
  8): 返回值   就是功能的结果,由return带回,带回给调用者

      E:方法调用:
         单独调用:一般来说没有意义,所以不推荐。
          赋值调用:有明确返回值的调用
          输出调用:没有明确返回值时调用,但不够好。因为我们可能需要针对结果进行进一步的操作。
对象名.方法名(实参列表)

实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配。
return语句终止方法的运行并指定要返回的数据。
      F:java中进行方法调用中传递参数时,遵循值传递的原则:
        基本类型传递的是该数据值本身,引用类型传递的是对对象的引用,而不是对象本身。
java中只有值传递!

      G:方法的注意事项
A: 方法不调用不执行
B: 方法与方法是平级关系,不能嵌套定义
C: 方法定义的时候参数之间用逗号隔开
D: 方法调用的时候不用在传递数据类型
E: 如果方法有明确的返回值,一定要由return带回一个值
  
     H:设计方法的原则:
 方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方  法只完成1个功能,这样利于我们后期的扩展。
     I:方法重载
在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同,与返回值无关。
参数列表不同:
A:参数个数不同
B:参数类型不同
J:类的方法
方法是类和对象动态行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序有一个个函数调用组成;面向对象中,整个程序的基本单位是类,方法是从属于类或对象的。java中方法参数传递是:值传递

二、面向过程和面向对象的本质区别
                  面向过程  面向对象
          
事物比较简单,     事物比较复杂
     区别    可以用线性的思维去解决  使用简单的线性思维无法解决

     共同点  面向过程和面向对象都是解决实际问题的一种思维方式。二者相辅相成,并不是对立的。
    解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系,方便我们分析整个系统;具体到微               观操作,任然使用面向过程方式来处理
     本质区别
             语言的进化发展跟生物的进化发展其实是一回事,都是”物以类聚”。相近的感光细胞聚到一起变成了我们的眼睛,               相近的嗅觉细胞聚到一起变成了我们的鼻子。
              语句多了,我们将完成同样功能的相近的语句,聚到了一块儿,便于我们使用。于是,方法出现了!
              变量多了,我们将功能相近的变量组在一起,聚到一起归类,便于我们调用。于是,结构体出现了!
            再后来,方法多了,变量多了!结构体不够用了!我们就将功能相近的变量和方法聚到了一起,于是类和对象出现               了!
              寥寥数语,就深刻的展示了语言的进化历史!其实,都非常自然,”物以类聚”。
            企业的发展也是”物以类聚”的过程,完成市场推广的人员聚到一起形成了市场部。完成技术开发的人员聚到一起形               成了开发部

三、面向对象思想概述
      A:面向过程思想概述
      我们来回想一下,这几天我们完成一个需求的步骤:首先是搞清楚我们要做什么,然后在分析怎么做,最后我们再               代码体现。
        一步一步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。
      在上面的每一个具体步骤中我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体               现。
       那么什么是面向过程开发呢? 面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完                 成,然后由这些功能方法相互调用,完成需求。
        面向过程的代表语言:C语言
B:面向对象思想概述
       当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。
       可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了。这时就开始思索,
       能不能把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。
       这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面向对象的思想。
C:面向对象思想特点
   a:是一种更符合我们思想习惯的思想
   b:可以将复杂的事情简单化
   c:将我们从执行者变成了指挥者,角色发生了转换
D:面向对象特征
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
E:面向对象开发
就是不断的创建对象,使用对象,指挥对象做事情。

四、类与对象概述
A:我们学习编程是为了什么
我们学习编程语言,就是为了模拟现实世界的事物,实现信息化。比如:去超市买东西的计费系统,去银行办业务的系统
B:我们如何描述现实世界事物
例如: 描述学生事物
姓名 , 年龄 , 性别 ....
学习 , 吃饭 , 睡觉 ....
属性: 就是该事物的描述信息
行为: 就是该事物能够做什么
我们学习编程语言,就是为了模拟现实中的事物,我们学习的Java语言最基本单位是类,所以,我们就应该把事物用一个 类来体现。
由此我们就得到了现实中的事物和类的对应关系
事物
属性 ----------------- 成员变量
行为 ----------------- 成员方法
C:定义类其实就是定义类的成员(成员变量和成员方法)
a:成员变量
和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
b:成员方法
和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。
D:类和对象的概念
a:类:是一组相关的属性和行为的集合。是对对象的抽象(抽象 抽出象的部分)
b:对象:是该类事物的具体体现。是具体的事物
先有具体的对象,然后抽象各个对象之间象的部分,归纳出类,通过类再认识其他对象。
c:举例:
学生
对象 班长就是一个对象

对象和类的关系:特殊到一般,具体到抽象。
类:我们叫做class
对象:我们叫做Object,instance(实例)。以后我们说某个类的对象,某个类的实例,是一样的意思。

类可以看成是一类对象的模板,对象可以看成该类的一个具体实例。
类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所具有静态和动态属性。
对象是java程序的核心,在java程序中,"万事万物皆对象"。
JDK提供了很多类供编程人员使用,编程人员也可定义自己的类。

面向对象编程(OOP)的本质
        以类的方式组织代码,以对象的方式组织(封装)数据。

抽象是什么?就是将多个物体共同点归纳出来,就是抽出像的部分!
从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象。
从代码运行角度考虑是先有类后有对象。类是对象的模板。

java中的对象是通过引用对其操作的。

五、JAVA程序运行的内存分析
栈:
1.每个线程私有,不能实现线程间的共享!
2.局部变量放置于栈中。
3.栈是由系统自动分配,速度快!栈是一个连续的内存空间!(自动分配连续的空间,后进先出)
堆:
1.放置new出来的对象!
2.堆是一个不连续的内存空间,分配灵活,速度慢!
方法区(也是堆):
1.被所有线程共享!
2.用来存放程序中永远是不变或唯一的内容。(类的信息(代码)、static(静态的)变量、常量池(字符串常量等等))

引用类型的概念
1.java中,除了基本数据类型之外的其他类型称之为引用类型。
2.java中的对象是通过引用来操作的。(引用:reference)
3.说白了,引用指的就是对象的地址!

属性(field,或者叫成员变量)
1.属性用于定义该类或该类对象包含的数据或者说静态属性。
2.属性作用范围是整个类体。
3.属性的默认初始化:
 
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。(数值    :0,0.0  char: \u0000,  boolean:false,  所有引用类型:null)  
4.属性定义格式:
[修饰符]  属性类型  属性名 = [默认值] 
修饰符:
可以省略。可以是:public, protected,private, Static, final。讲到隐藏和封装时再说。
属性类型:
可以是任何类型,基本类型和引用类型
属性名:
合法标识符即可。首字母小写,驼峰原则!


六、java对象的创建和使用
    必须使用 new 关键字创建对象。
    格式:类名 对象名 = new 类名(); 如:Person person= newPerson ();
如何使用成员变量
格式:对象名.变量名 如:person.age 
使用对象(引用) . 成员变量来引用对象的成员变量。
如何使用成员方法
格式:对象名.方法名(...)
如:person. setAge(23) 
    使用对象(引用) . 方法(参数列表)来调用对象的方法。
七、成员变量和局部变量的区别
A:在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上

B:在内存中的位置不同
成员变量:在堆内存
局部变量:在栈内存

C:生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

D:初始化值不同
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。


注意事项:
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
八、方法的形式参数是类名的时候如何调用
A:Java中参数传递问题
形式参数
基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变直接影响实际参数
B:方法的参数是类名
如果你看到了一个方法的形式参数是一个类类型(引用类型),这里其实需要的是该类的对象。
九、 匿名对象
概述
就是没有名字的对象
应用场景
a:调用方法,仅仅只调用一次的时候。
b:匿名对象可以作为实际参数传递

      ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值