OOP学习笔记
前言
OOP:面向对象的相关学习,比如,oop概念,
一、定义类和对象
1.1、类和对象的关系
- 什么是类:就是属性和方法的集合(使用事物的属性特征和行为特征来描述该类事物)
- 什么是对象:对象是一类事物的具体体现,它是类的一个实例,对象必然具备该类的属性
- 类和对象的关系
- 类是对一类事物的描述,是抽象的
- 对象是一类事物的实例,是具体的
- 类是对象的模板,对象是类的实例
1.2、定义类 和对象
1.2、步骤
- 编写属性(特征):姓名,性别,年龄,学号
- 编写方法(行为):学习,吃饭
1.3、注意事项
- 类的属性是成员变量
- 类的方法是成员方法,不加static 关键字
二、面向对象
2.1、面向过程
侧重的过程,它是一种线性思维
步骤简单清晰,第一步要做什么,第二步要做什么…
22、面向对象(OOP)
面向对象:它是Java的核心思想,它是一种分类的思维模式
再处理问题之前,将这个问题分成若干个的小部分(分类),然后对这些分类进行单独的思考
最终还是对这个分类下的细节进行面向过程的处理
**面向对象编程 OOP:**本质是:就是以类的方式组织代码,以对象的方式组织(封装)数据
2.3、面向对象和面向过程的区别
2.4、面向对象的特点(抽象)
抽象:指的是忽略主题中与当前目标无关的方面,以充分的注意 与当前目标有关的方面(抽出我m9们需要的东西,其余内容不用管)
简单理解:(就是把需要的相同部·分抽离出来,归纳为一个类)
2.5、面向对象的三大特征
- 封装:是指将类的信息隐藏在类的内部,不予许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
- 继承:是指子类和父类之间,子类拥有父类的一切非私有的属性的方法
- 多态:同一种事物的不同表现形式
三、对象的方法
3.1、语法
public 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...){
//方法体
return 数据;
}
3.2、this关键字
定义:当方法的局部变量 和 类的成员变量重名的时候,会根据【就近原则】,优先使用局部变量,
如果需要访问本类中的成员变量:可以使用this关键字
格式:this.成员变量名
注意:通过谁调用方法,this就指向谁(谁就是this)
四、构造方法的作用
4.1、 什么是构造方法
是专门用来创建对象的方法,当我们通过new 关键在来创建对象的时候,其实就是在调用构造函数
4.2、格式:
public 类名称(参数类型 参数名称1,参数类型 参数名称2…){ // 方法体}
4.3、构造方法的作用
- 使用new关键字,本质上就是调用构造方法(构造器)、
- 用来初始化值
4.4、注意事项(8点)
-
构造方法的名称必须和类名【完全一致】
-
构造方法不写返回值类型,void也不要写
-
构造方法不能return一个具体的返回值
-
如果没有写任何构造方法,编译器会默认赠送一个构造方法
赠送的构造方法:没有参数、方法体什么事情都没有做
-
一旦我们编写了至少一个构造方法,编译器赠送的构造方法就消失了
-
构造方法也可以重载(方法名相同,参数列表不同)
-
重载构造方法后,想要使用无参数构造,需要显示一个定义的无参构造
-
快捷键 alt + insert
五、static关键字
5.1、static关键字修饰成员变量
- 如果一个变量使用了static 关键字修饰,那么这个变量不在属于对象自己,多个对象共享一个数据
- static 修饰的变量 叫做 静态变量 也叫类变量 或者类属性
5.2、static 修饰成员方法
一旦使用static 修饰了成员方法,叫静态方法也叫类方法 ,那么这个方法就成为了静态方法,静态方法不属于对象,而是属于类
如果没有static 关键字,必须先创建对象,才能通过【对象名.方法名】的方式调用
如果有static 关键字,不需要创建对象,直接通过【类名.方法名】的方式调用
不管是成员方法还是成员变量,通过static 关键字修饰以后,都不推荐使用对象名调用,推荐:【类名.静态变量】【类名.静态方法()】
5.3、注意事项
- 静态的不能直接访问非静态
- 原因:因为内存中是【先】加载静态方法内容,【后】加载非静态内容
- 静态方法中不能使用this
- 原因:this代表的是当前对象,谁调用方法就指向谁,而静态方法属于类
5.4、静态代码块
定义:static 关键字修饰代码块就是静态代码块
特点:当第一次使用到本类时,静态代码块会执行一次,而且只执行唯一的一次
静态内容总是优先与非静态的,所以静态代码块比构造方法优先执行
六、面试题
讲讲你对OOP和面向对象的理解
在这里插入代码片
static的作用
在这里插入代码片