Java基础——面向对象篇

一、设计对象并使用

  1. 类和对象

  • 类(设计图):是对象共同特征的描述;

  • 对象:是真实存在的具体东西。

在Java中,必须先设计类,才能获得对象。

如何定义类:

public class 类名{


1.成员变量(代表属性,一般是名词)

2.成员方法(代表行为,一般是动词)

3.构造器

4.代码块

5.内部类

}



如何得到类的对象:

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



如何使用对象:

访问属性: 对象名.成员变量

访问行为:对象名.方法名(..)

  1. 类的几个注意事项

  • 用来描述一类事务的类,专业叫做Javabean类

在Javabean类中,是不写main方法的。

  • 在以前,编写main方法的类,叫做测试类

我们可以在测试类中创建javabean类的对象并进行赋值调用。


对象的成员变量的默认值规则

数据类型

明细

默认值

基本类型

byte、short、int、long

0

float、double

0.0

Boolean

false

引用类型

类、数组、接口、String

null

注:1.定义类有哪些建议,有什么需要注意的?

  • 类名首字母建议大写、英文、有意义,满足驼峰模式,不能用关键字,满足标志符规定;

  • 一个代码文件中可以定义多个类,但是只能一个类是public修饰的,public修饰的类名必须是Java代码的文件名称。

2.成员变量的格式是什么样的,有什么特点?

  • 成员变量的完整定义格式是:修饰符 数据类型 变量名称=初始化值

  • 一般无需指定初始化值。

二、封装

  1. 什么叫封装

  • 告诉我们,如何正确设计对象的属性和方法。

  • 原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为

  1. 封装的好处

  • 让编程变得很简单,有什么事,找对象,调方法就行。

  • 降低我们的学习成本,可以少学、少记,或者说压根不用学,不用记对象有哪些方法,有需要时去找就行

  1. private关键字(私有关键字

  • 是一个权限修饰符

  • 可以修饰成员(成员变量和成员方法)

  • 被private修饰的成员只能在本类中才能访问

针对private修饰的成员变量,如果需要被其它类使用,提供相应的操作:

1.提供“setXxx(参数)”方法,用于给成员变量赋值,方法用public修饰

2.提供“getXxx()”方法,用于获取成员变量的值,方法用public修饰

三、构造方法

  1. 构造方法概述

构造方法也叫做构造器、构造函数

作用:创建对象的时候,有虚拟机自动调用,给成员变量进行初始化的。

  1. 构造方法的格式

public class Student{

修饰符 类名(参数){

方法体;

}

}

特点:

1.方法名与类名相同,大小写也要一致

2.没有返回值类型,连void都没有

3.没有具体的返回值(不能由return带回结果数据)

执行时机:

1.创建对象的时候有虚拟机调用,不能手动调用构造方法

2.每创建一次对象,就会调用一次构造方法

  1. 构造方法的种类及作用

  1. 无参数构造方法:初始化的对象时,成员变量的数据均采用默认值。

  1. 有参数构造方法:在初始化对象的时候,同时可以威威对象进行赋值。

  1. 构造方法注意事项

  1. 构造方法的定义

  • 如果没有定义构造方法,系统将给出一个默认无参数构造方法

  • 如果定义了构造方法,系统将不再提供默认的构造方法

  1. 构造方法恶的重载

  • 带参构造方法,和无参数构造方法,两者方法名相同,但是参数不同,这叫做构造方法的重载

  1. 推荐的使用方式

  • 无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法

四、标准JavaBean

  1. 类名需要见名知意

  1. 成员变量使用private修饰

  1. 提供至少两个构造方法

  • 无参构造方法

  • 带全部参数的构造方法

  1. 成员方法

  • 提供每一个成员变量对应的setXxx()/getXxx()

  • 如果还有其他行为,也需要写上

五、对象内存图

  1. 一个对象的内存图

对于上述创建对象,内存所做工作为:

  1. 加载class文件

  1. 申明局部变量

  1. 在堆内存中开辟一个空间

  1. 默认初始化

  1. 显示初始化

  1. 构造方法初始化

  1. 将堆内存中的地址值赋值给左边的局部变量

  1. 多个对象的内存图

内存图与一个对象的内存图一样,只是一个对象时内存所做的工作在新的对象创建时在重新执行一次

  1. 两个变量指向同一个对象内存图

两个变量指向同一个对象时,是将第一个变量的地址赋值给第二个变量,两个变量使用同一个堆内存,且当其中一个变量的值发生改变,其余变量在访问时值也会跟着改变。

  1. this的内存原理

this的作用:区分局部变量和成员变量。

this的本质:代表方法调用者的地址值。

  1. 基本数据类型和引用数据类型的区别

从内存的角度去解释:

  • 基本数据类型:数据值是存储在自己的空间中。特点为赋值给其他变量,也是赋的真实的值。

  • 引用数据类型:数据值是存储在其他空间中,自己空间中存储的是地址值。特点为赋值给其他变量,赋的地址值。

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

  • 成员变量:类中方法外的变量

  • 局部变量:方法中的变量

区别

成员变量

局部变量

类中位置不同

类中,方法外

方法内、方法申明上

初始化值不同

有默认初始化值

没有,使用之前需要完成赋值

内存位置不同

堆内存

栈内存

生命周期不同

随着对象的创建而存在,随着对象的消失而消失

随着方法的调用而存在,随着方法的运行结束而消失

作用域

整个类中有效

当前方法中有效