小白学Java04:面向对象基础

类和对象

  • 类是描述对象的“基本原型”,它定义一类对象所能拥有的数据和能完成的操作。在面向对象的程序设计中,类是程序的基本单元。
  • 相似的对象可以归并到同一个类中去,就像传统语言中的变量与类型关系一样。
  • 程序中的对象是类的一个实例,是一个软件单元,它由一组结构化的数据和在其上的一组操作构成。
  • 可以将现实生活中的对象经过抽象,映射为程序中的对象。对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(class)。

类和对象的关系

  • 类是Java的核心和本质。它是Java语言的基础,因为类定义了对象的本质。
  • 类定义了一种新的数据类型,可以用新类型来创建该类型的对象。
  • 类(class)是对象(object)的模板,而对象(object)是类的一个实例(instance)。

类的组成

  • 变量:指对象的状态。
  • 方法:指对象的功能单元。
  • 消息:
    软件对象通过相互间传递消息来相互作用和通信,一个消息由三部分组成:
    • 接受消息的对象
    • 接收对象要采取的方法
    • 方法需要的参数

类定义的规范

[类的修饰符] class 类名称 [extends 父类名称][implements 接口名称列表]
{ 
       变量定义及初始化;
       方法定义及方法体;
}

类的组成结构

在这里插入图片描述

权限修饰符

  • public
    公共的,权限公开,最大权限
  • protected
    受保护的,仅限同包类,或不同包类但是属于继承本类的才能调用
  • 不写
    (缺省值)仅同一包内可访问
  • private
    私有 :只能在定义他们的类中调用

变量

变量的作用域

决定了变量可使用的范围

  • 全局变量:
    可以在整个类中被访问
  • 实例成员变量:
    单个实例对象独有,修改对象自己的实例变量,不影响其他对象
  • 类变量/静态变量:
    本类的所有对象共享,使用static修饰,使用类名.静态变量名调用
  • 局部变量:
    定义在方法体中的变量,使用前必须初始化,只能在定义其的代码中被访问
  • 小知识:
    使用局部变量比使用全局变量更安全

方法分类

按返回值分

  • 有返回值
  • 无返回值(void)

按参数分

  • 无参数
  • 有参数(单个参数,多个参数) (了解形参与实参概念)

按功能分

  • 实例方法
  • 类方法 也称为静态方法
  • 构造方法,也称为构造函数或者构造器

this关键字

  • this:指向自己的引用,即当前方法所在的对象。
    它的一个主要作用是要将自己这个对象当作参数,传送给别的对象中的方法

方法的重载

  • 方法重载即指同一个类内多个方法可以享有相同的名字。
    但是这些方法的参数必须不同(参数个数不同,参数类型不同,参数顺序不同)。

类加载的过程

  1. 初始化类变量,
  2. 分配类方法的入口函数
  3. 执行静态块

对象创建的过程:

  1. 初始化实例变量
  2. 分配实例方法的入口函数
  3. 执行对象块
  4. 执行构造函数

类变量与实例变量

  • 对象是通过类来创建的; 因此创建对象时需先加载相应的类; 而一个类可以(通过new+构造方法) 创建多个对象,每个对象都有属于自己的实体(变量);

区别:

  1. 共享性:类变量被所有对象共享,即同一类的所有对象共享此类的类变量; 实例变量为每个对象独有; 操作自己的实例变量而不会影响其它对象
  2. 初始化时间:类变量在类加载时分配内存的;实例变量在创建对象时分配内存的;
  3. 消亡时间:类变量在程序退出时释放内存; 对象不存在实例变量就不存在了[对象什么时候消亡,变量的消亡时间]
  4. 调用形式:类变量一般通过类名.来调用;实例变量通过对象.调用
  5. 声明的形式:类变量static来声明,实例变量没有static声明

小知识:Java的垃圾回收机制

  • Java的垃圾回收机制是自动的,如果想要手动回收,可以使用System.gc()
  • 通过重写父类的finalize()方法,(当对象被释放时,将自动调用对象的finalize()方法)。也可以做点别的事情

类方法与实例方法的区别

  • 类加载时,类方法被分配入口地址; 实例方法是在第一个对象创建时被分配入口地址

  • 类方法一般通过类名来调用

  • 在类方法中不能使用 this 关键字;因为this代表当前对象; 类方法是在类加载时就存在而此时对象还不存在

值传递和引用传递

  • 当方法被调用时,如有参数,参数须要实例化(初始化);即参数是具体的值;

在java中,参数传递分为两种:

  • 值传递:基本数据类型采用值传递;
    实参的值永远不发生变化
  • 引用传递:类类型采用引用传递;
    实参的内存地址不变化,但是内容有可能变化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值