JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)

 前言 

1. 学习视频:

尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)_哔哩哔哩_bilibili

2023最新Java学习路线 - 哔哩哔哩

第二阶段:Java面向对象编程

6.面向对象编程(基础)

7.面向对象编程(进阶)

8.面向对象编程(高级)

正文

6. JAVA面向对象编程(基础)

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第1张图片

6.1 面向对象编程的概述

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第2张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第3张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第4张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第5张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第6张图片

​​

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第7张图片

成员变量的初始化值
数据类型 默认初始化值

byte、short、int

0

long  0L
float、double 0.0F 和 0.0D
char 一个空字符,即   '\u0000'
boolean false
引用数据类型

null,表示变量不引用任何对象

6.2 类的实例化、内存解析

6.2.1 类的实例化

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第8张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第9张图片

6.2.2 内存解析:

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第10张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第11张图片

说明:创建类的多个对象时,每个对象在对空间中有一个对象实体。每个对象实体中保存着一份类的属性。如果修改某一个对象的某个属性值时,不会影响其他对象此属性的值。

但是如果,把两个对象的变量指向了堆空间中的同一个对象实体,则修改会影响这两个。如下p1、p3指向了同一个地址值。JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第12张图片

6.2.3 类的成员之一:属性

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第13张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第14张图片JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第15张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第16张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第17张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第18张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第19张图片

6.2.4 类的成员之一:方法

6.2.4.1 方法的作用与方法的声明

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第20张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第21张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第22张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第23张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第24张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第25张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第26张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第27张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第28张图片

6.2.4.2 对象数组

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第29张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第30张图片

6.3 方法应用

6.3.1 方法的重载

java允许在一个类定义多个名称相同方法,但是参数类型个数必须不同,这就是方法的重载。(方法的重载与返回值的类型形参的名权限修饰符都无关。)

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第31张图片

注意如下,参数类型的顺序不一样,也叫方法的重载!!

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第32张图片

例如下面println()方法的重载,在打印char[ ]的时候,打印的是字符数组的值,而不是地址值。

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第33张图片

6.3.2 可变个数形参的方法:(int ... nums)必须声明在形参列表的最后,且只有一个

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第34张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第35张图片

③特例:在同一个类中,可变个数形参的方法与其他方法名相同且形参类型是相同的可变个数类型的数组类型的方法,不构成重载。如 int ...nums int[ ] nums 。

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第36张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第37张图片

可变个数形参的方法应用场景举例:

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第38张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第39张图片

6.3.3 方法值传递机制剖析

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第40张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第41张图片

说明:基本数据类型的变量没有地址值,赋值操作传递的是数据值。引用类型的数据变量传递的是地址值,等号赋值之后,两者都指向同一个地址值。引用类型的数据变量修改一个,就修改了这个地址值中存储的数据值。

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第42张图片JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第43张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第44张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第45张图片

这也证明了自己定义的类也是类,是引用数据类型!

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第46张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第47张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第48张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第49张图片

6.3.4 递归(Recursion)方法(一定要向已知方向递归)(能循环不递归,递归时间复杂度太高)

方法的递归是指在一个程序的内部调用自身的过程。递归必须要有结束条件,不然就会陷入无限递归的状态,永远无法结束调用。

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第50张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第51张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第52张图片

递归方法练习题:

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第53张图片JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第54张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第55张图片JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第56张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第57张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第58张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第59张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第60张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第61张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第62张图片

关与时间复杂度分析:

题解 | #统计每个月兔子的总数# - 牛客网

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第63张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第64张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第65张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第66张图片

6.4 package与import关键字的使用

6.4.1 package 包

语法格式: package  顶层包名.子包名;

  • 一个源文件只能有一个声明包的package语句。
  • package语句作为Java源文件的第一条语句出现。若缺省该语句,则指定为无名包。
  • 包名属于标识符,满足标识符命名的规则和规范(全部小写)、见名知意。
    •  包通常使用所在公司域名的倒置:com.atguigu.xxx 
    • 取包名时不要使用 java.xx包。
  • 包对应于文件系统的目录,package语句中用“.”来指明(目录)的层次,每“.”一次,就表示一层文件目录。
  • 同一个包下可以声明多个结构(类、接口),但是不能定义同名的结构(类、接口)。
  • 不同的包下可以定义同名的结构(类、接口)。
6.4.1.1 包的作用

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第67张图片

6.4.1.2 包的作用

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第68张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第69张图片

6.4.1.2 JDK中的主要包

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第70张图片

6.4.2 import 导入

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第71张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第72张图片JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第73张图片

6.5 面向对象的特征之一:封装性(Encapsulation)

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第74张图片6.5.1 为什么需要封装性?

6.5.2 如何实现数据封装?

6.5.2.1 权限修饰符 及 权限大小

Java规定了4种权限修饰符:

  • private(私有化,仅限于本类内部调用和赋值)、
  • 缺省(什么都不写,仅限于本包内和本类内)、
  • protected(受保护的,其他包非子类不可调用。)、
  • public(公开的、公共的,公开调用和赋值)。

作用:可以使用4种权限修饰符来修饰类及其内部成员。当这些成员被调用时,体现可见性的大小。

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第75张图片

注意:

  • 类:只能使用public、缺省去修饰。
  • 类的内部成员:可以使用这四种去修饰。

例如:当我们把类中的某个属性设置为private时,外界用户就不能使用类名.属性名”随意设置和获取,而必须使用类中的Set和get方法对属性进行设置和获取。 把Set和get方法分为两个,符合低耦合原则(一个方法,一个作用)。

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第76张图片

​​​

set和get方法
方法 作用 修饰符 返回值类型 参数 返回值
set 设置属性 public void 有参数
get 获取属性 public 各种类型 各种类型

6.6 类的成员之三:构造器(Constructor)

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第77张图片

什么方法可以称为构造器:

  • 方法名与类名相同
  • 没有返回值类型的声明(没有void或其他类型声明)
  • 没有return语句。

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第78张图片JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第79张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第80张图片

没有空参构造器,创建对象的时候就需要为有参构造器的参数赋值。

因此一个类中如果定义了有参的构造方法,我们最好再定义一个无参的构造方法

而且为了方便实例化,对象构造方法通常用public来修饰。

类的属性赋值过程:顺序实际上是按代码执行顺序。

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第81张图片JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第82张图片

6.7 JavaBean的理解

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第83张图片

6.8 UML类图

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第84张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第85张图片JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第86张图片

总结:

封装性:将对象的属性和行为封装起来,不需要让外界知道具体实现细节。用四种权限修饰符体现可见性的大小。根据程序设计原则体现了高内聚和低耦合。

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第87张图片

企业真题:

类与对象:

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第88张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第89张图片

用到面向对象的地方有很多,例如创建类、设计类的时候,还有通过创建的这个类进行实例化,然后调用相关功能。

Java内存结构:

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第90张图片

JVM虚拟机中内存划分为类加载器子系统、运行时数据区、执行引擎、本地方法接口、本地方法库。其中运行时数据区包括:方法区、堆、程序计数器、本地方法栈、虚拟机栈。

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第91张图片

权限修饰符:

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第92张图片

构造器:

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第93张图片

属性及属性赋值顺序:

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第94张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第95张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第96张图片

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)_第97张图片

你可能感兴趣的:(Java基础,java)