第六章: 面向对象编程(基础部分)

本文详细介绍了Java面向对象编程的基础概念,包括类与对象、属性、创建对象、方法、克隆对象、递归、重载、可变参数、构造器、作用域以及This关键字的使用。通过实例和练习题帮助读者理解和掌握这些核心概念。
摘要由CSDN通过智能技术生成


面向过程:把问题分解成多个步骤,一步步完成
面向对象:把问题分解成多个小问题,把小问题分配给不同的对象去完成

在这里插入图片描述

1.类与对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
字符串按照jvm的规定会放在方法区一个叫常量池的空间,
年龄是一个基本数据类型,直接存放在了堆中。

在执行Cat cat = new Cat();这句话的时候,会将我们类的信息加载到方法区。
在这里插入图片描述
在这里插入图片描述

1.属性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.创建对象,访问属性

在这里插入图片描述
在这里插入图片描述

3.对象分配进制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.对象创建过程

在这里插入图片描述

5.对象机制练习

在这里插入图片描述
b = null,b地址那个位置就置空了,置空了之后那条线就断开了
在这里插入图片描述
在这里插入图片描述
最后由于b为空,故System.out.println(b.age)会出现一个异常。

2.方法

1.方法快速入门

在这里插入图片描述

(1)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.方法的调用机制

在这里插入图片描述

3.方法的妙用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.方法的定义

在这里插入图片描述
在这里插入图片描述

5.方法注意事项和细节

在这里插入图片描述
(1)
在这里插入图片描述
(3)
在这里插入图片描述
return n可以输出,int ->double成立,这就是兼容

(4)
在这里插入图片描述
会报错,因为void不可以返回任何值

在这里插入图片描述
这就对了,return后面不能加任何值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.方法练习题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三元运算符写错了,应该是return num % 2 != 0?true :false;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.方法的传参机制

1.基本数据类型

main中的a和b就是实参
Swap中的a和b为形参
在这里插入图片描述
这个本质就是值传递
main中的a,b变量与swap中的a,b变量不会冲突
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面两种都是引用传递

2.数组(test100案例)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.对象(Test200案例)

对象也属于引用类型,所以原来的对象也会发生改变
最关键的是b.test200(p)是将p的地址赋给了test200
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.案例

在这里插入图片描述
P=null输出10

在这里插入图片描述
P=null就意味着那条红线断了
在这里插入图片描述
在这里插入图片描述
P = new Person(),输出10
在这里插入图片描述
public void test200(Person p)确实产生一个箭头指向人对象,
但P = new Person();重新new一个会在堆中产生一个新的人对象
在这里插入图片描述

3.克隆对像

我写的(重新起名了,更加容易理解)
在这里插入图片描述
老师写的
在这里插入图片描述
这里必须new一个新的对象p2,然后分别赋值
不能直接p2 = p,这样的话p和p2是指向同一个地址,不能算克隆
在这里插入图片描述
在这里插入图片描述
最后验证一下p与p2是否是同一个,发现不是,拷贝成功。
在这里插入图片描述

4.递归

1.递归能解决什么问题

在这里插入图片描述
在这里插入图片描述

2.递归的执行机制

在这里插入图片描述
案例一
每次执行test都会开一个新栈
在这里插入图片描述
在这里插入图片描述

案列二
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.斐波那契数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.猴子吃桃

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.老鼠出迷宫

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.汉诺塔

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.八皇后问题

在这里插入图片描述
在这里插入图片描述

5.重载

1.重载介绍

在这里插入图片描述

2.重载快速入门

这个使用会自动匹配下面的方法
在这里插入图片描述

下面的四个方法calculate构成了重载
在这里插入图片描述

3.重载的使用细节

在这里插入图片描述
下面没有构成重载,编译器会报错(参数名n1,n2,a1,a2对编译器来说一样)
在这里插入图片描述
在这里插入图片描述
下面也没有构成方法的重载,返回的类型无所谓,编译器会报错

在这里插入图片描述
在这里插入图片描述

4.重载的课堂练习

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.可变参数

1.可变参数的使用

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.可变参数的细节

第三条:可变参数的本质就是数组
在这里插入图片描述
传入的实际参数为实参
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.可变参数练习

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.作用域

1.作用域的基本使用

全局变量也叫属性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.作用域使用细节

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第四条
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第五条
在这里插入图片描述

8.构造器(构造方法)

1.构造器的基本介绍

在这里插入图片描述
在这里插入图片描述

2.构造器的快速入门

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.构造器的使用细节(javap)

在这里插入图片描述

第一条
构造器重载(构造器本身也是一个方法)
在这里插入图片描述
在这里插入图片描述

第五条
调用构造器会出错
在这里插入图片描述
在这里插入图片描述

第六条
new Dog()这个后面的小括号就是用来调用默认构造器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第七条
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果想要Dog dog1 = new Dog();成功运行,则需要显示的定义一下 无参构造器
在这里插入图片描述

4.构造器课堂练习

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.对象创建的流程分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.This

1.引出this

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.this入门

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.this本质

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.this细节

在这里插入图片描述
细节一(this可以访问属性)
在这里插入图片描述
传统方式是按照就近原则来找的,要访问当前局部变量有没有name和num
而使用this则就直接访问的属性(全局变量)
在这里插入图片描述
在这里插入图片描述

如果加一个局部变量,那么结果就会发生改变
在这里插入图片描述
在这里插入图片描述

细节三(this可以访问方法)
在这里插入图片描述
在这里插入图片描述

细节四(this可以访问构造器)
在这里插入图片描述
在这里插入图片描述

5.this课堂练习

在这里插入图片描述

这里面构造器用来初始化属性,不用也可以,再new完一个对象后,再赋属性。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.本章作业

在这里插入图片描述
第一题(注意考虑代码的健壮性
1.数组可能为空 ,double arr[] = {};
2.数组可能为null ,double arr[] = null;

在这里插入图片描述
在这里插入图片描述

第二题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第三题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第四题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第五题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第六题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第八题
在这里插入图片描述
匿名对象只能用一次,new Test().count1();执行完后,count变为10,之后就被销毁。
在这里插入图片描述
在这里插入图片描述

第九题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第十题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第十一题
在这里插入图片描述

第十二题
在这里插入图片描述
在这里插入图片描述

如果使用下面这种方式会报错
在这里插入图片描述

因为
在这里插入图片描述
所以应该使用以下方式进行处理
在这里插入图片描述

第十三题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

自己写的
在这里插入图片描述
在这里插入图片描述

第十四题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值