美文网首页
2019-04-18

2019-04-18

作者: Mrshuiguo | 来源:发表于2019-04-18 18:12 被阅读0次

@[TOC](面向对象初步)

# 面向对象引入

计算机除了存储八大基本数据类型,还要存储其他数据,比如一个人,一件事,一个视频,一张图片等等

Java在模拟现实过程中提供了类

现实生活中如何描述一个事物:

JAVA | 现实生活

--------|-------------

属性 | 该事物的特征描述

方法 | 该事物的动作行为

举例栗子:表示一只小狗

属性:狗的品种,颜色,体重等

方法:小狗会叫,摇尾巴,跳

**Java语言的基本单位是类,用类来描述事物。**

## 类的定义

```java

[访问权限控制符] class 类名{

属性/成员变量/字段

成员方法

}

```

## 对类和对象的理解

### 对类的理解

1.类是用来描述现实事物的,是Java语言的最基本单位

2.类是抽象的,是由多个对象抽象想象的部分而来

3.类可以理解为一个模板,数属性和行为的集合,可以通过类的模板创建具体的对象

4.Java使用class来描述一个类

5.类的本质用来组织代码(方法归类),封装数据的(理解提高成员变量的安全性)。

### 对对象的理解

1.对象是客观存在的,万事万物皆是对象

2.对象是在类的基础上创建的

3.对象又称为 实例/引用/变量/对象

创建对象的格式:

```java

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

```

访问对象:

对象名.成员变量

对象名.成员方法

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

1. 定义的位置不同

成员变量: 类体以内,方法体以外

局部变量: 方法的声明上,或者方法体内

2. 在内存位置不同

成员变量: 在堆区分配内存

局部变量: 在栈区分配内存

3. 初始化值不同

成员变量: 系统赋予初始值

```java

byte short int long 0

float double 0.0

boolean false

char \u0000

引用类型 null

```

局部变量: 方法的声明上,或者方法体内

       没有默认值,必须先声明再赋值再使用

4. 变量生命周期不同

 生命周期: 变量从开始创建到销毁的全过程

 成员变量: 随着对象的创建而创建,随着垃圾回收器回收对象的时候销毁

 局部变量: 随着方法的调用而创建,随着方法调用结束而销毁

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

# 匿名对象

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

特点:

1. 既然是对象,同样可以访问成员

2. 匿名对象只能够使用一次,如果需要使用多次,必须使用变量接收

3. 匿名对象一旦使用一次完毕,立刻成为垃圾对象,等待垃圾回收期在空闲的时候回收,节约内存资源

4. 匿名对象在Java里一般用于访问一次的情况,简化代码,在Android里节约内存资源

# 垃圾对象

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

成为垃圾对象的情况:

1. 当指向某个堆区的空间的对象被赋值为null

2. 匿名对象第一次使用完毕

3. 对象所在的方法调用完毕

4. 对象被重新赋值新的地址

# this关键字

## 概念和原理

当局部变量和成员变量重名的时候,可以考虑使用this来区分

this代表当前对象,详细原理看内存图![在这里插入图片描述](https://img-blog.csdnimg.cn/20190418172320521.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hjd2Rk,size_16,color_FFFFFF,t_70)

## this的特点

1. 成员变量和局部变量重名的时候使用this

2. 创建任何一个对象都会创建一个this引用和对象指向同一个堆区的空间

3. this代表当前对象,谁调用了this就是指得谁

4. this只能够出现在类的内部

5. this的设计代表现实生活中代词的概念  ("我的")

6. 默认访问类的成员都可以使用this来访问,如果访问成员没有书写this,默认系统会加上this

# 构造方法

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

格式:

```java

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

方法体

}

```

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

## 构造方法的特点

1. 构造方法没有返回值,连void都没有

2. 构造方法也是方法,存在方法重载

3. 构造方法是用来给成员快速初始化的

4. 构造方法方法名必须和类名保持一致

## 构造方法的注意事项

1. 如果我们没有书写构造方法,系统会帮我们书写一个无参构造方法

2. 如果你一旦书写了一个带参构造方法,就会覆盖系统的无参构造方法

因此,我们最好养成习惯,每次书写一个bean的时候,都写上无参构造方法

这样做的好处:

1. 无参构造方法能够初始化默认成员的值

2. 反射中调用的就是无参构造方法,很多框架中都会利用反射技术创建对象,反射大部分都是依赖无参构造方法

# 类的组成

综上,类的组成如下:

```java

class 类{

成员变量

成员方法

普通方法

get/set方法

构造方法

构造方法可以重载

}

```

相关文章

网友评论

      本文标题:2019-04-18

      本文链接:https://www.haomeiwen.com/subject/uzvgcqtx.html