一:概述
1.1Java类及类的成员
属性、方法、构造器、代码块、内部类
(1)数组
java虚拟机内存划分

各区域作用

内存解析

基本使用

两个变量指向一个一维数组
没有new就不会在堆里新开辟空间

(2)对象数组
![]()
(3)方法
形参:方法声明时,一对小括号声明的一个或多个形式参数,简称形参
实参:方法被调用时,实际传递给形参的变量或常量,就称为实际参数,简称实参

值传递机制场景
方法内声明的局部变量
基本数据类型传递的是数据值


引用类型传递的是地址值


形参与实参

二:面向对象基础
2.1面向对象的特征
封装、继承、多态(抽象)
2.2其它关键字的使用
This、super、package、import、static、final、interface、abstract
2.3面向对象和面向过程
(1)面向过程

(2)面向对象
先找实现事情涉及到的主体(类)、后看类完成任务需要具备什么功能(方法)

2.4类和对象

(1)类的声明和使用
类的设计:设计类的成员,类的设计是为了实例化对象,调用类的属性和方法

(2)类的实例化
创建对象,是为了调用属性的类和方法。对象的实例化是对获取到类的属性和方法赋值

(3)对象在内存中分配涉及到的内存结构
刚创建对象时存在默认值
创建对象即开辟了空间,而变量是获取到了空间的首地址
两个变量指向的是同一个对象

(4)通过方法调用对象
每调用一个方法,相当于一个新的栈针
引用类型变量其实都是地址
返回值返回给调用者,返回给对象没有用,因为对象是栈针
main函数结束后,对应指针出栈,p1没了,堆内p1对应空间无指针指向,后期垃圾回收器将堆回收

三:面向对象三大特征
3.1 封装
(1)权限修饰符

(2)构造器
每个类都有构造器,包括抽象类(不能造对象)
声明
权限修饰符 类名(新参列表){}
![]()
作用

使用说明

(3)实例变量赋值过程
分类

执行顺序判断:根据打印值是否覆盖判断

执行先后顺序 执行次数

(4)JavaBean
JavaBean是一种Java语言写成的可重用组件

ideal技巧
Alt+inset:创建get、set方法
(5)关键字this
使用场景
![]()
概述
![]()
调用属性和方法
针对于方法内的使用情况(准确的说是非static1修饰的方法)

构造器内使用情况

this调用构造器

This()调用当前空参构造器

3.2 继承

(1)场景
继承不能打破封装性(虽然继承了但不能用)

(2)使用说明

(3)默认父类
![]()
(4)多层继承

(5)方法重写
定义
子类对父类继承过来的方法进行的覆盖、覆写的操作,就称为方法的重写
![]()
遵循规则
子类不能重写父类中声明为private权限修饰的方法

(6)super调用构造器
使用场景

属性不覆盖
若子类中声明了与父类同名属性,子类中包含两个同名属性

super调用属性、方法

super调用构造器
子类继承父类时,不会继承父类的构造器
在子类构造器首行

子类继承父类时不继承父类构造器,构造器只在同名类中有
子类构造器首行默认调用父类空参构造器
(7)子类对象实例化
从结果来看,体现为类的继承性
![]()
从过程来看

创建对象是new,构造器是用于初始化的

3.3 多态
(1)定义
新建的对象必须为定义的变量类型的子类

(2)使用前提
![]()
(3)适用性
![]()
使用场景

(4)好处
避免多次重载
新增子类时不用修改方法,对拓展进行开放,对修改进行关闭

(5)向下转型
父类变量接受了子类对象后,不能调用子类拥有的特定方法

(6)static
定义
实例变量是指每个对象都有自己的变量,被一个类所有实例所共享的成员变量叫类变量,不用创建对象也有

![]()

使用
一个更改,其它人用的时候也是改变了的(在内存空间中只有一份)
static修饰方法

(7)单例设计模式
定义
![]()
实现思路

(8)代码块
随着类的加载而执行

案例使用

(9)Final
fina修饰类表示类不能被继承,final修饰表示方法不能被重写
final修饰的变量其实就变成了常量,意味着一旦赋值,就不可更改
