文章目录
前言
今天学习面向对象(很重要)。
今日内容:
1.面向对象
2.类与对象
3.三大特征–封装
4.构造器
提示:以下是本篇文章正文内容
一、面向对象概述
1.1 面向对象(OOP,Object Oriented Programming)
Java是"面向对象程序设计语言"
1.2面向对象和面向过程的区别
面向过程:强调的是"过程",往往关注事情"怎么做",比喻成"执行者",基本单位:函数(类似于Java中的方法)
面向对象:强调的是"对象",往往关注事情"找谁做",比喻成"指挥者",基本单位:类
面向过程和面向对象没有好坏之分,都是人们在生活中解决问题的手段之一:
在解决一些较小的问题时,往往选择"面向过程思想"
在解决一些较大的问题是,往往选择"面向对象思想"
1.3 面向对象思想三大阶段
面向对象基本思想(JavaSE)
面向接口思想
面向切面思想(真正的面向对象思想,手撕Spring框架源码)
1.4 面向对象三大特征
封装,继承,多态
二、类与对象
1.1 什么是类
类: 是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
属性: 就是该事物的状态信息。
行为: 就是该事物能够做什么。
代码如下(示例):
1.2 什么是对象
对象:是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。
1.3 类与对象的关系以及先后
类是对象的模版,抽象
对象是类的实体,实例
类与对象的先后关系:
先类后对象
1.4 类的设计
类的设计:
设计过程:
1.根据类的属性信息和行为动作设计出基础的类
2.在类中加入"封装"思想
3.在类中加入"构造器"概念
4.在类中加入特殊(静态)的属性信息和行为动作
5.将类一拆为多,加入"继承"思想
6.解决继承思想的安全隐患,加入"抽象"概念
7.将多个类继续一拆为多,加入"接口"概念
8.在类或接口中加入"常量"概念
9.在类或接口中加入"嵌套"概念
10.在类中加入构造器代码块的概念
11.在类中加入静态代码块的概念
12.熟悉Java中特殊的类"枚举类"
分类:
测试类:
基于测试效果演示的类(含有main()或者@Test)
标准类:
将类完整的设计出来
解释:
属性信息 ==> 代码中的"成员量"
行为动作 ==> 代码中的"成员方法"
成员量:
成员变量: 在类中方法外的变量
实例变量: 在类中方法外,且没有static关键字修饰的变量,实例变量归属于"对象"
静态变量: 在类中方法外,且含有static关键字修饰的变量,静态变量归属于"类"
成员常量:
成员方法:
实例方法: 在类中没有static关键字修饰的方法,实例方法归属于"对象"
静态方法: 在类中含有static关键字修饰的方法,静态方法归属于"类"(暂不涉及)
格式:
public class 类名 {
实例变量
实例方法
}
1.5 对象的使用:
格式:
类名 对象名 = new 类名();
使用:
对象名.实例变量名;
对象名.实例方法名(实参);
1.6 实例变量和局部变量的区别
局部变量和实例变量的区别:
局部变量:声明在代码块中或者代码块声明上的变量
实例变量:声明在类中方法外,且没有static关键字修饰的变量
区别:
代码中声明的位置不同:
局部变量:代码块中或者代码块声明上
实例变量:类中方法外
内存中存储的位置不同:
局部变量:栈内存
实例变量:堆内存
是否含有默认值不同:
局部变量:没有
实例变量:含有
代码中变量的作用域不同:
局部变量:所属方法中
实例变量:所属类中(静态方法,静态常量,静态代码块,静态成员内部类中无效)
内存中变量的生命周期不同:
局部变量:随着方法的调用而加载,随着方法的出栈而消失
实例变量:随着对象的创建而加载,随着对象的回收而消失
加载方式和次数不同:
局部变量:每调用一次方法,局部变量就会加载一次,最多可以加载无数次
实例变量:每创建一次对象,实例变量就会加载一次,最多可以加载无数次
1.7 this关键字的第一种使用方式
this关键字的第一种用法:
位置:
实例方法中或构造器中
格式:
this.实例变量名;
this.实例方法名(实参);
作用:
用来区别同一个类中同名的实例变量和局部变量
含义:
哪个对象调用了this所在的实例方法或构造器,this关键字就代表哪个对象
public class ClassDemo {
int num = 10;
public void method () {
int num = 20;
System.out.println("num = " + num);//就近原则 20 //需求:在打印20的同时,打印10
System.out.println("num = " + this.num);
}
}
结果是20 10
三、封装
1.1 封装思想
- 含义: 给程序中不同的内容添加不同的访问权限级别,从而达到保护的效果
- 作用: 提供程序中内容的安全性
- 核心: 封装思想的核心中是四种权限访问级别
1.2 四种权限访问级别:
权限访问级别从大到小的关系如下:
public > protected > 缺省(sheng三声) > private
- 解释:
public: 公共的
protected: 受保护的
缺省: 什么都不写
private: 私有的
private关键字:
- 含义:
private关键字是封装思想的体现形式之一 - 修饰:
用来修饰成员变量,成员常量,构造器,成员方法,成员内部类
私有实例变量:
-
含义:
被private修饰的实例变量 -
格式:
private 数据类型 变量名; -
作用:
被private修饰的内容只能在本类中访问,从外界无法进行访问 -
应用:
1.将类中所有的实例变量的进行私有化
2.针对每个被私有化的实例变量都提供一对的公共访问方式:set()和get()举例:去银行存钱和取钱 存钱的过程:需要带着钱(有参数),不用带着钱回来(无返回值) 取钱的过程:不需要带着钱(没有参数),带着钱回来(有返回值)
四 、构造器
1.1构造器(构造方法)
- 作用:
1.构造器中隐式的内容给对象进行成员初始化(day12讲解,实例初始化过程)
2.构造器中显式的内容给对象进行变量的赋值 - 格式:
修饰符 类名 () {
//隐式内容
//显式内容
}
1.2构造器的注意事项:
1.构造器的名字必须和所在类名相同
2.构造器没有返回类型,而且连void都不能有
3.当一个类没有任何的构造器时,JVM自动给其分配一个public无参构造器,用来给对象的成员进行初始化,一旦这个类有任何构造器时,JVM不再给其提供
4.构造器支持重载
5.构造器中包含两个部分,显式部分和隐式部分,隐式部分代码优先于显式部分的代码