Java笔记

  • 面向对象
  • 概念


程序先编译(编译器起作用),后运行(虚拟机JVM起作用)

面向对象

概念

  1. 传统编码(面向过程):从计算机执行角度出发,以代码执行过程为核心(方便计算机)
    Java编码(面向对象):从人的角度出发,从现实世界角度出发(方便人)
    C++ 是部分面向对象
  2. 需求来自现实世界
    对象:一切客观存在的事物都是对象,万物皆对象
    任何对象,一定具有自己的特征和行为
属性(特征):有什么  有什么组成
 		方法(行为):能做什么
 		
 		汽车——车			继承			is  a
 		汽车——发动机			关联			has  a
 		司机——汽车			依赖			use  a
  1. 编码思想:先确定解决问题所需的对象,再建立对象间关系,从而确定过程
    传统思想:自顶向下,逐步求精。
    Java中的对象 就是一块儿数据,代表了生活中的一个对象。
    Java中的类 就是一堆代码,定义了一类对象应该具有哪些属性、方法,从而形成对象的模板
  2. 类的抽取:是对 对象共性的抽象,代表了一类事物,人对一类事物的认识。
    在一组相同或类似的对象中,抽取出共性的特征和行为,保留所关注的部分。
  3. 变量
    局部变量:在函数的内部定义的变量
定义位置:方法或方法内的结构当中
 	无默认值:先赋值再使用
 	访问范围:声明开始到代码块结束 ,{ } 是一个代码块
 	命名冲突:重合范围内不允许两个局部变量重名

成员变量(实例变量):

定义位置:类的内部,方法的外部
 	有默认值:int——0
 			  double——0.0
 			  char——\u0000(空格)
 			  String——null
 			  boolean——false
 			  对象类型——null
 			  其他——null
 	访问范围:整个类内部有效
 	命名冲突:两个成员变量不可以重名
 	         **当成员变量和局部变量重名,局部变量优先**
  1. 方法(对象的实例方法,代表对象能做什么)
    Java中没有函数的概念,函数是面向过程的概念,而Java是纯面向对象,站在面向对象的角度,方法和函数差不多,但Java中没有函数,所以说函数都理解为指方法
    方法分两部分:
  1. 声明:修饰符、返回值类型、方法名、形参列表、抛出的异常。 代表了对象能做什么
  2. 实现: { 代码块 } 代表了对象怎么做
  1. 方法重载:定义多个方法,方法名形同,参数表不同,其他参数相同也可以,不同也可以;
    参数表不同:参数个数不同,参数类型不同,参数类型排列不同(顺序不同);
    不允许两个方法的参数表,只有形参名不同;
    谁选择:编译器在编译时会根据实参的类型,选择相应的方法去调用。
    向上就近匹配:如果类型没有byte,自动提升为short或者再往上,没有float就调用double
    引用不明确:不可以出现引用不明确,
    例如:引用m(1,2)方法,但有m(int a,double b)和m(double a,int b),就会报错不知道引用哪个方法,就是引用不明确,但它两个任意存在哪一个都可以正确引用,但两个都存在就会报错
    重载的作用:允许类中的同类方法同名,屏蔽参数的差异(参数不同,同一个行为的具体行为方式与内容也会不同)
  2. 构造方法:
  1. 不能定义返回值类型,就没有返回值这一项
  2. 方法名必须和类名相同,包括大小写
  3. 不能手动调用,只能在对象的创建过程中自动调用一次
  1. 对象的创建过程
  1. 分配空间(分配在堆空间),属性被赋予默认值(int a = 10; 此时a分配空间,赋予默认值此时a=0)
  2. 初始化属性,属性被赋予初始值(int a = 10; 此时初始化属性,a才会=10)
  3. 调用构造方法,属性可以被赋予构造参数