面向对象初步

面向对象引入

计算机除了存储八大基本数据类型,还要存储其他数据,比如一个人,一件事,一个视频,一张图片等等
Java在模拟现实过程中提供了类
现实生活中如何描述一个事物:

JAVA 现实生活
属性 该事物的特征描述
方法 该事物的动作行为

举例栗子:表示一只小狗
属性:狗的品种,颜色,体重等
方法:小狗会叫,摇尾巴,跳
Java语言的基本单位是类,用类来描述事物。

类的定义

[访问权限控制符] class 类名{
属性/成员变量/字段
成员方法
}

对类和对象的理解

对类的理解

1.类是用来描述现实事物的,是Java语言的最基本单位
2.类是抽象的,是由多个对象抽象想象的部分而来
3.类可以理解为一个模板,数属性和行为的集合,可以通过类的模板创建具体的对象
4.Java使用class来描述一个类
5.类的本质用来组织代码(方法归类),封装数据的(理解提高成员变量的安全性)。

对对象的理解

1.对象是客观存在的,万事万物皆是对象
2.对象是在类的基础上创建的
3.对象又称为 实例/引用/变量/对象

创建对象的格式:

类名 对象名 = new 类名();

访问对象:
对象名.成员变量
对象名.成员方法

成员变量和局部变量的区别

  1. 定义的位置不同
    成员变量: 类体以内,方法体以外
    局部变量: 方法的声明上,或者方法体内
  2. 在内存位置不同
    成员变量: 在堆区分配内存
    局部变量: 在栈区分配内存
  3. 初始化值不同
    成员变量: 系统赋予初始值
byte short int long 0
float double 0.0
boolean false
char \u0000
引用类型 null

局部变量: 方法的声明上,或者方法体内
       没有默认值,必须先声明再赋值再使用

  1. 变量生命周期不同
     生命周期: 变量从开始创建到销毁的全过程
     成员变量: 随着对象的创建而创建,随着垃圾回收器回收对象的时候销毁
     局部变量: 随着方法的调用而创建,随着方法调用结束而销毁

  2. 当成员变量个局部变量重名时,局部变量优先,就近原则;此时要访问成员变量要使用this关键字

匿名对象

概念:没有名字的对象,本质还是一个对象
特点:

  1. 既然是对象,同样可以访问成员
  2. 匿名对象只能够使用一次,如果需要使用多次,必须使用变量接收
  3. 匿名对象一旦使用一次完毕,立刻成为垃圾对象,等待垃圾回收期在空闲的时候回收,节约内存资源
  4. 匿名对象在Java里一般用于访问一次的情况,简化代码,在Android里节约内存资源

垃圾对象

概念:没有地址引用的对象称为垃圾对象
成为垃圾对象的情况:

  1. 当指向某个堆区的空间的对象被赋值为null
  2. 匿名对象第一次使用完毕
  3. 对象所在的方法调用完毕
  4. 对象被重新赋值新的地址

this关键字

概念和原理

当局部变量和成员变量重名的时候,可以考虑使用this来区分
this代表当前对象,详细原理看内存图在这里插入图片描述

this的特点

  1. 成员变量和局部变量重名的时候使用this
  2. 创建任何一个对象都会创建一个this引用和对象指向同一个堆区的空间
  3. this代表当前对象,谁调用了this就是指得谁
  4. this只能够出现在类的内部
  5. this的设计代表现实生活中代词的概念 (“我的”)
  6. 默认访问类的成员都可以使用this来访问,如果访问成员没有书写this,默认系统会加上this

构造方法

构造方法可以快速的创建对象,省去一步步通过set方法为对象属性赋值的过程。它本身也是一个特殊的方法,可以搭配new关键字,快速给对象分配空间。

格式:

[访问权限控制符] 方法名(参数列表){
方法体
}

(注意:构造方法的方法名必须与类名保持一致,包括大小写)

构造方法的特点

  1. 构造方法没有返回值,连void都没有
  2. 构造方法也是方法,存在方法重载
  3. 构造方法是用来给成员快速初始化的
  4. 构造方法方法名必须和类名保持一致

构造方法的注意事项

  1. 如果我们没有书写构造方法,系统会帮我们书写一个无参构造方法
  2. 如果你一旦书写了一个带参构造方法,就会覆盖系统的无参构造方法
    因此,我们最好养成习惯,每次书写一个bean的时候,都写上无参构造方法
    这样做的好处:
    1. 无参构造方法能够初始化默认成员的值
    2. 反射中调用的就是无参构造方法,很多框架中都会利用反射技术创建对象,反射大部分都是依赖无参构造方法

类的组成

综上,类的组成如下:

class{
	成员变量
	成员方法
		普通方法
		get/set方法
	构造方法
		构造方法可以重载
}

猜你喜欢

转载自blog.csdn.net/hcwdd/article/details/89380136