Java:面向对象

面向对象

一、面向对象和面向过程

1、面向对象—> 一种看待问题、解决问题的思维方式,强调的是完成功能的对象

面向过程—> 强调的是功能行为

2、对象:具有特定功能、能够解决特定问题的实体(实例)

类:若干个具有相同特征和行为的对象的组合的集合(抽象)

总结:类是对象的集合,对象是类的个体

在这里插入图片描述

3、识别类的小技巧:一般来说,名词都是类(名词提炼法

类与对象详述

1、类的设计(会)

  • 从若干个具有相同类型的特征和行为的对象中,提取出这些相同的特征和行为,设计为一个类。
  • 类中定义所有的对象共有的特征和行为,其中,特征用属性表示,行为用方法表示。
  • 所谓属性,其实就是定义在类中的一个全局变量。
  • 使用关键字**class**来定义类。
  1. 语法:

    [ 访问权限修饰符 ] class 类名 {

    ​ // 类体

    ​ // 属性: 描述所有对象共有的特征。

    ​ // 方法: 描述所有对象共有的行为。

    }

  2. 类设计注意事项:

    • 类名:是一个标识符,遵循大驼峰命名法。
    • 一个Java文件在可以写多个类,但是只有与文件名相同的类,可以使用public修饰。
    • 每一个类在遍以后都会生成一个.class字节码文件,以内的名字命名。

2、对象的实例化(会)

​ 1、实例化

  • 实例化对象,其实就是从类中找到一个实体。

  • 使用关键字new进行实例化。

    e.g. Person zhangsan = new Person();

​ 2、对象的内存分析(了解)

​ 凡是遇到new,都表示在堆上开辟空间。因此,对象的实例化,也是在堆上开辟空间。

在这里插入图片描述

3、匿名对象(会)

  1. 定义:匿名对象就是没有名字的对象。

    因为没有名字,所以当我们使用匿名对象是实现功能时,只能在创建对象的这个时刻使用一次。一旦使用完毕,这个对象就无法再次调用,变成了垃圾。系统会通过垃圾回收机制在某个时刻进行内存回收。

  2. **作用:**灵活使用内存,节省内存

  3. 使用场景:

    • 用作方法参数;
    • 用作匿名内部类。
  4. 多引用指向同一个对象(了解)

    原理说明:对象和数组都是引用数据类型,都是通过栈区中的引用(变量)保存堆区中的对象地址。所以当我们让多个引用保存同一个对象的地址,通过任何一个变量都可以访问这个对象(址传递)。

4、类中的成员访问(会)

  1. 成员分类:
    • 使用关键字static修饰的属性、方法,被称为静态属性、静态方法
    • 没有使用关键字static修饰的属性、方法,被称为非静态属性、非静态方法,又被称为是你属性、实例方法。
  2. 空间分配:
    • 静态的成员是属于类的,在内第一次被加载到内存中的时候,就已经分配空间了。
    • 非静态的成员是属于对象的,在实例化对象的时候才会分配空间。
  3. 访问;
    • 静态成员需要使用来访问,非静态成员需要使用对象访问;
    • 静态方法中可以直接访问本类中的静态成员,不能直接访问本类中的非静态成员;
    • 非静态方法中可以直接访问本类中的静态成员,也可以直接访问本类中的非静态成员。
  4. 成员变量的理解
    1. 成员变量的特点:(这里特指非静态成员)
      • 在创建对象的时候会赋默认值;
      • 可以在类中定义变量的时候,直接赋值;
      • 非静态的成员变量可以在除了static修饰的方法外任何地方使用。
    2. 成员变量和局部变量的区别:
      • 作用域: 成员变量是整个对象;局部变量是从定义开始到所在的方法/if /for结束。
      • **默认值:**成员变量会有默认值;局部变量没有默认值,要想使用必须先赋值。
      • **释放机制:**成员变量跟对象保持一致,通过垃圾回收机制回收:局部变量使用完立即释放。
      • 存放的位置:成员变量放在堆区中的对象中;局部变量放在栈区中的方法中。

5、static (会)

  1. 定义:关键字,被static修饰的成员就变成了静态的,具有保值功能。

  2. static的作用(会)

    • 用于保值

      static int a = 3;
      只要我们不手动改变a的值,到程序结束前a的值会一直存在。
      
    • 用于工具类的创建

      工具类内部都是使用的静态方法,这样就不需要在调用方法时再创建工具对象,节省内存,提高效率。

  3. 类是一种自定义的数据类型(了解)

    1. 类,是一种自定义的引用数据类型,可以作用于属性、方法参数、返回值…
    2. 注意:一个类型一旦创建出来,就是一个独立的数据类型,在它可见的范围内都是可以使用的,包括自己的内部。

6、this关键字(会)

  1. 概念:是一种引用数据类型,本身是一个关键字用在类的实例方法或者构造方法中代表的是当前的对象保存的是当前对象的地址
  2. 场景:当我们想在当前类的内部拿到当前对象的引用时,可以使用this
  3. this的功能总结
    • 用来区分成员变量和局部变量
    • 可以在构造方法内部调用其他重载的构造方法,提高代码的复用性,简化代码。
  4. this关键字的省略
    • 当需要访问的属性与局部变量没有重名的时候,this关键字可以写,也可以不写。
    • 当需要访问的属性与局部变量重名的时候,this关键字必须写,不可以省略。

7、构造方法(会)

  1. 概念:构造方法,其实也是一个方法。用于实例化对象,在实例化对象的时候调用。

  2. 和普通的方法的区别

    • 构造方法的名字,必须和类名一致。
    • 构造方法没有返回值,返回值类型部分不用写。
  3. 构造方法的意义

    一般情况下,使用构造方法,是为了在实例化对象的同时,给一些属性进行初始化赋值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值