7、面向对象

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_45536396/article/details/102736070

面向对象

一、程序

模拟现实世界,解决现实生活中的问题

二、对象

1. 一切客观存在的事物都是对象,万物皆对象。

2. 任何对象都具有特征和行为

a) 特征:一般用名词代替,代表对象有什么。也称之为属性。

b) 行为:一般用动词代替,代表对象能干什么。也称之为方法。

3. 类

a) 类的抽取

从一组相同或者类似的对象中抽取出共性的特征和行为,保留需要关注的部分。

狗类:属性(品种 年龄 性别 毛色…) 方法(吃 睡 喝 …)

b) 类的定义

语法: class 类名{}

属性:通过变量定义,定义在类中,方法的外面。成员变量|实例变量

数据类型 属性名;

方法:定义方式同函数 不加static 后面详细讲解。成员方法|实例方法

public 返回值类型 方法名(参数列表){//方法的声明 代表对象能干什么

//方法实现 能够完成功能应该怎么去做

}

4. 对象

a) 对象的创建

基于类名,借助于new关键字

语法: 类名 对象名 = new 类名();

b) 对象的访问

a. 赋值:对象名.属性名 = 值;

b. 取值:对象名.属性名

c. 调用方法:对象名.方法名(实参);

5. 类与对象的关系

类: 一个 对象:多个

类中定义了对象应该具备的属性和方法,类是对象的模板。

对象是具有多个特征和行为的实体,对象是类的实例。

三、成员变量和局部变量的区别【重要】

局部变量 成员变量
定义位置 定义在方法(函数)内部的变量 定义在类中,方法的外面
作用范围 定义开始到定义的代码块结束 至少在本类中有效
默认值 无默认值 必须先赋值才能使用 有默认值 同数组
命名冲突 在重合范围内,不允许两个局部变量重名 成员变量能和局部变量重名,但以局部变量优先

注意:默认值

整数类型: 0 小数类型:0.0 布尔类型:false

字符类型:空字符|‘\u0000’ String|其他:null

四、方法的重载

1. 概念:对于对象的某一种行为可能存在多种实现过程,具体选择哪一种实现过程,取决于传入的参数。

2. 要求:方法名相同,参数列表不同(个数、类型,顺序),与返回值类型无关。

注意:方法名相同,参数列表的类型,个数,顺序都相同,只有参数的名字不同不构成方法的重载。

3. 执行:会根据传入的参数匹配与之相对应的方法实现。

4. 好处:屏蔽使用者之间的差异 方便 灵活。

五、构造方法

1. 概念:在创建对象的时候调用特殊的方法。

2. 特点

a) 方法名必须和类名完全相同

b) 没有返回值类型

c) 不能通过手工调用的方式对构造方法进行调用,在创建对象的时候会由JVM触发构造方法的自动调用。

3. 对象创建的过程

a) 分配空间(在堆中开辟空间用来保存创建的对象)同时赋予默认值

b) 初始化属性(对属性赋予初始值)

c) 执行构造方法中的代码

d) [将对象保存在自身类型的引用(对象名)中]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WXV0ZwHm-1571962767619)(E:\Corejava\课堂笔记及代码\day7_面向对象\笔记\1.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DkNMxl2N-1571962767620)(E:\Corejava\课堂笔记及代码\day7_面向对象\笔记\对象的创建过程.png)]

4. 注意:

a) 构造方法依然支持重载,会根据传入的参数匹配相对应的方法。

b) 当类中没有提供任何的构造方法时会默认提供一个无参的构造方法;当类中提供了有参构造方法时,无参构造方法将不再提供。

c) 构造方法能为属性(成员变量)赋值,但是要区分参数(局部变量)和成员变量(属性)

5. 对象属性的赋值机会

a) 分配空间,并未属性赋予默认值 (属性的第一次赋值机会)

b) 初始化属性,为属性赋予初始值(属性的第二次赋值机会)

c) 执行构造方法中的代码,通过构造方法为属性赋值(属性的第三次赋值机会)

对象创建完毕之后,通过对象名.属性为属性赋值.

六、引用

变量:基本变量|对象变量。

基本变量:基本数据类型对应的变量. 基本变量中存的是数值,赋值:值传递.

对象变量:对象数据类型对应的变量。称之为引用

引用中存储的是对象的地址,通过引用可以操作对象。

引用的赋值是地址间的传递。

七、this关键字

1. this.属性 this.方法名(实参);

this代表当前对象,类似于‘我’,this用在本类,代表调用本类中的属性,方法。一般情况下可以省略。

注意:当局部变量和成员变量重名,可以用this来区分。

2. this()|this(实参) 代表调用本类的无参|有参构造方法

注意

a) this()只能出现在本类中的构造方法的第一行

b) 不能出现递归调用

可以省略。

注意:当局部变量和成员变量重名,可以用this来区分。

2. this()|this(实参) 代表调用本类的无参|有参构造方法

注意

a) this()只能出现在本类中的构造方法的第一行

b) 不能出现递归调用

猜你喜欢

转载自blog.csdn.net/weixin_45536396/article/details/102736070