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

以“把大象装进冰箱为例”

 

面向过程:强调的是功能行为,以函数为最小单位,考虑怎么去做

  1. 打开冰箱;
  2. 把冰箱装进去;
  3. 关闭冰箱;

面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做

有三个主体:大象、冰箱、人

大象{

        进入(冰箱){

        }

}

冰箱{

         开开();

         闭合();

}

人{

         打开(冰箱){

                              冰箱.开开();

         }

         关闭(冰箱){

                               冰箱.闭合();

         }

}

面向对象分析方法分析问题的思路和步骤:

  1. 根据问题的需要,选择问题所针对的现实的实体
  2. 从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类
  3. 把抽象的实体用计算机语言进行描述,形成计算机世界中的类,即借助某种程序语言,把类构造成计算机能够识别和处理的数据结构;
  4. 将类实例化成计算机世界中的对象,对象是计算机世界中解决问题的最终工具。

 

 

 

二、类和对象

1.类和对象的定义

类:对一类事物的描述,是抽象的、概念上的定义;

对象:是实际存在的该类的具体个体,因为也称为实例

2.设计类

面向对象程序设计的重点就是类的设计;

类的设计,其实就是类的成员的设计。

 

属性:成员变量=field(域、字段)

方法:成员方法=method(函数)

构造器

 

创建类的对象=类的实例化=实例化类

 

3.类的使用

(1)创建类,设计类的成员;

(2)创建类的对象;

(3)通过“对象.属性”或“对象.方法”调用对象的结构

 

4.如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性(非static的)

这句话有一个需要注意的点:

  1. 如果我们修改一个对象的属性,则其他对象互不影响;

5.对象的内存解析

 

JavaSE——面向对象基础

6.类中的属性

成员变量 vs    局部变量

     相同点:

  1. 定义变量的格式相同,数据类型 变量名=变量值
  2. 先声明,后使用
  3. 变量都有作用域

     不同点:

  1. 在类中声明的位置不同

               成员变量:直接声明在类的{}中

               局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内2.

     2.权限修饰符的不同

                属性:可以指明其权限修饰符

                局部变量:不可以使用权限修饰符

      3.默认初始化值

                 成员变量:根据其类型,都有默认初始化值

                 整型(byte、short、int、long):0

                 浮点型(float、double):0.0

                字符型(char):0(或\u0000

                布尔型(boolean):false

                引用数据类型:null

                局部变量:没有默认初始化值,意味着我们在调用局部变量时,必须初始化值

                                  特别的:形参调用时,赋值即可


         4.在内存中加载的位置也是不一样的

                 成员变量:加载到堆空间中(非static)

                 局部变量:栈中

7.类中方法的使用

7.1方法定义:类中具有的功能,比如:Math类中的sqrt()、random()

Scanner类中的nextXXX()

Arrays类中的sort()

 

 

7.2方法的声明:权限修饰符 返回值类型 方法名(参数列表){方法体}

以上几个部分每个方法都带有,除此之外还有一些关键字:

static、final、abstract来修饰方法

           7.2.1、权限修饰符

                        private public 缺省 protected

           7.2.2、返回值类型: 有返回值 VS 无返回值

                               如果有返回值时,必须在方法声明时,定义返回值类型。同时在方法中,需要使用return关键字来指定返回   的变量或常量。

                                如果方法没有返回值时,使用void来表示。通常就不写return,但是如果使用的话,表示结束此方法的意思。

 

           7.2.3、方法名——标识符

                         首单词首字母小写、其余字母首字母大写;见名知意

           7.2.4、形参列表

                       格式:形参1、形参2、...

           7.2.5、方法体

                       方法功能的体现

           7.2.6、return关键字的使用

                       使用范围:在方法体中

                       作用: (1)结束方法

                                   (2)针对于有返回值类型的方法,返回所要数据;

                       注意点:return关键字后不可以声明执行语句

 7.3 方法的使用

       可以调用当前类的属性或方法

       方法中不可以定义方法

 

三、JVM内存结构

编译完源程序后,生成一个或多个字节码文件

我们使用JVM中的类加载器和解释器对生成的字节码文件进行解释和运行。意味着,需要将字节码文件对应的类加载到内存中,涉及到内存解析

 

 

四、万事万物皆对象

怎么理解?

  1. 在Java语言范畴中,我们都将功能、结构等封装到类中,通过类的实例化,来调用具体的功能结构;

               >文件:File

               >网络资源:URL

     2.涉及到Java语言与前端的语言HTML、CSS、JS,后端的数据库交互时,前后端的结构,在Java层面交互时,都体现为类、对象

 

四、匿名对象

理解:创建的对象没有显式的赋给一个变量名,即为匿名对象。

特征:只能调用一次

使用:new Person()

 

五、方法扩展

5.1方法的重载

 

概念:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可

注意:

跟方法的权限修饰符、返回值类型、形参变量名、方法体都没有关系

 

5.2可变个数的形参

  1. 可变个数形参的格式:数据类型...变量名;
  2. 当调用可变个数形参的方法时,传入的参数个数可以是:0、1、2、n个
  3. 可变个数形参的方法与本类中方法名相同时,形参不同的方法之间构成重载
  4. 可变个数形参的方法与本类中方法名相同时,形参类型也相同的数组之间不构成重载,(可变个数形参就相当于数组)
  5. 可变个数形参在方法的形参中,必须声明在末尾 ,且只能声明一个

 

5.3方法参数的值传递机制

      1.形参和实参的定义

          形参:方法定义时,声明在小括号内的参数

          实参:方法调用时,实际传递给形参的数据

      2.值传递机制

          如果参数是基本数据类型,此时实参给形参的是真实存储的数据值

JavaSE——面向对象基础

          如果参数是引用数据类型,此时实参给形参的是数据的地址值。

 

JavaSE——面向对象基础

5.4方法的递归

定义:一个方法体内调用方法它自身

例子:

public int getSum(n){

          if(n==1){

                  return 1;

           }else{

           return n+getSum(n-1);

         }

}

 

 

 

六、构造器(构造方法)

1.作用

(1)创建对象;

(2)创建对象的同时可以对成员变量进行初始化

2.格式

权限修饰符 类名(){}

3.注意

  1. 构造器和方法是不一样的,对象可以调方法,但是构造器是用来创建对象的;
  2. 一旦我们显示的定义了构造器后,系统就不会默认给我们定义构造器;
  3. 一个类中,至少会有一个构造器

 

 

 

相关文章: