导图社区 面向对象基础
.面向对象设计中,类封装了数据,而类的成员函数作为其对外的接口,抽象地描述类,用类将数据和操作这些数据的函数放在一起,这就是面向对象设计方法的本质。
listener 音标['lisnә] 读音 汉语翻译 n. 收听者, 听众 英语解释: 名词listener: someone who listens attentively 同义词:hearer, auditor, attender
Filter过滤器(重要) Javaweb中的过滤器可以拦截所有访问web资源的请求或响应操作。 1、Filter快速入门 1.1、步骤: 1. 创建一个类实现Filter接口 2. 重写接口中方法 d...
会话的解释 [conversation] 指两人以上的对话(多用于学习别种语言或方言时) 详细解释 (1).聚谈;对话。现多用于学习别种语言或方言时
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
面对对象基础
介绍
面向过程编程(POP)
是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的
面向对像编程(OOP)
是一种以对象为中心的编程思想,通过指挥对象实现具体的功能
面向对象思想使是基于面向过程思想演变而来
类和对象
类
类是对现实生活中一类具有共同属性和行为的事物的抽象
【类】是对事物,也就是对象的一种描述,可以将类理解为一张设计图根据设计图,可以创建出具体存在的事物
组成
属性
该事物的各种特征
在代码中通过成员变量来体现(类中方法外的变量)
成员变量和局部变量区别
类中位置不同
成员变量:类中方法外
局部变量·:方法内或者方法声明上(形参)
内存中位置不同
成员变量:堆内存
局部变量·:栈内存
生命周期不同
成员变量:随着对象的存在而存在,随着对象的消失而消失
局部变量·:随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同
成员变量:有默认的初始化值
局部变量·:没有默认的初始化值,必须先定义,赋值,才能使用
行为
该事物存在的功能
在代码中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
定义
步骤
1.定义类
2.编写类的成员变量
3.编写类的成员方法
对象
是能够看得到摸的着的真实存在的实体
对象也指客观存在的事物,JAVA中万物皆对象
创建
创建流程
1.加载指定的字节码文件进内存
2.通过new在堆内存中开辟空间,并分配首地址值
3.对对象中的属性进行默认初始化
4.调用与之对应的构造函数,构造函数压栈
5.构造函数中执行隐式的语句super()访问父类中的构造函数
6.对属性进行显示初始化
7.调用类中的构造代码块
8.执行构造函数中自定义的初始化代码
9.初始化完毕,将地址赋值给指定的引用
使用
使用成员变量
使用成员方法
对象打印细节
解释
com.itheima.object1.Student
全类名(包名+类名)
关系
类是对象的描述,对象是类的实体
对象内存图
单个对象
注意
成员方法不会进入堆内存,但会储存成员方法的地址
两个对象
多个对象使用的是同一份字节码文件,同一份成员方法,成员变量则不同
两个引用指向同一对象
垃圾回收
当堆内存中,对象或数组产生的地址,通过任何方式都不能被找到后,就会被判定为内存中的“垃圾"
垃圾会被Java垃圾回收器,空闲的时候自动进行清理
封装
private关键字
private是一个权跟修饰符,可以用来修饰成员(交量,方法)
特点:只能在本类当中进行访问
私有成员变量后需设置set、get方法,可在方法内设置条件判断
针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作
提供“get变量名()"方法,用于获取成员变量的值,方法用public修饰
提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰
this关键字
当局部变量与成员变量重名时,JAVA会采用就近原则
this作用
可以调用本类的成员(变量,方法)解决局部变量和成员变量的重名问题
this:代表所在类的对象引用,方法被哪个对象调用,this就代表哪个对象
this带上参数列表的方式就可以访问本类中的其他构造函数,用于调用构造函数的this语句必须定义在构造函数的第一行,因为初始化动作要先执行
内存原理
应用
当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。但凡本类功能内部使用到了本类对象都用this表示
面向对象三大特征之一(封装,继承,多态)
思想:隐藏实现细节,仅对外暴露公共的访问方式
现实例子:线路板
体现
私有成员变量,提供set、get方法
私有仅仅是封装的一种体现,封装!=私有
将代码抽取到方法中是对代码的封装
将属性抽取到类当中是对数据的封装
好处
提高代码安全性、复用性
构造方法
构造方法:构建、创造对象的时候,所调用的方法,每创建一次就执行一次
不能手动调用构造方法,仅在创建对象时调用
作用
本质上是用于创建对象,也可用于给对象的数据(属性)进行初始化
格式
方法名与类名相同,大小写也要一致
一般函数的名字是可以和类名一样的,但是不符合书写规范
没有返回值类型,连void都没有
没有具体的返回值(不能由retrun带回结果数据)
构造函数中有return语句吗?可以有,用于结束初始化的
如果没有定义构造方法,系统将给出一个默认的无参数构造方法
如果定义了构造方法,系统将不再提供默认的构造方法
如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法,建议全都写
static关键字
static关键字是一个修饰符,用于修饰成员(成员变量、成员函数)
当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用:`类名.静态成员`
特点
随着类的加载而加载,类的消失而消失,说明它的生命周期最长
优先于对象存在,明确一点:静态是先存在的,对象是后存在的
被所有对象所共享
可以直接被类名所调用
静态方法只能访问静态成员,不能访问非静态成员。而非静态方法既可以访问静态也可以访问非静态;
静态方法中不可以定义this、super关键字。因为静态优先于对象存在,所以静态方法中不可以出现this
使用时机
成员变量:如果数据在所有对象中的都是一样的,直接静态修饰
成员函数:如果函数没有访问过对象中的属性数据,那么该函数就是静态的
成员变量和静态变量的区别
名称
成员变量也叫实例变量; 静态变量也叫类变量
内存存储
成员变量存储在堆内存的对象中;静态变量存储在方法区的静态区中。
生命周期
成员变量随着对象的出现而出现,随着对象的消失而消失; 静态变量随着类的出现而出现,随着类的消失而消失
静态代码块
随着类的加载而执行,且只执行一次,并优先于主函数;可用于对类进行初始化
static { 静态代码块中的执行语句}
构造代码块
构造代码块定义的是不同对象共性的初始化内容,其作用是给对象进行初始化,对象一建立就运行,而且优先于构造函数执行。它和构造函数的区别是构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化。
{ 构造代码块中的执行语句}
代码块
在Java中,使用{}括起来的代码被称为代码块
分类
局部代码块
位置
方法中定义
限定变量的生命周期,及早释放,提高内存利用率
类中方法外定义
每次构造方法执行的时,都会执行该代码块中的代码,并且在构造方法执行前执行
将多个构造方法中相同的代码,抽取到构造代码块中,提高代码的复用性
需要通过static关键字修饰,随着类的加载而加载,并且只执行一次
在类加载的时候做一些数据初始化的操作
主题