前言一、面向对象概述
1.1 面向对象(OOP,Object Oriented Programming)1.2面向对象和面向过程的区别1.3 面向对象思想三大阶段1.4 面向对象三大特征 二、类与对象
1.1 什么是类1.2 什么是对象1.3 类与对象的关系以及先后1.4 类的设计1.5 对象的使用:1.6 实例变量和局部变量的区别1.7 this关键字的第一种使用方式 三、封装
1.1 封装思想1.2 四种权限访问级别: 四 、构造器
1.1构造器(构造方法)1.2构造器的注意事项:
前言
今天学习面向对象(很重要)。
今日内容:
1.面向对象
2.类与对象
3.三大特征–封装
4.构造器
提示:以下是本篇文章正文内容
一、面向对象概述 1.1 面向对象(OOP,Object Oriented Programming)Java是"面向对象程序设计语言"
1.2面向对象和面向过程的区别面向过程:强调的是"过程",往往关注事情"怎么做",比喻成"执行者",基本单位:函数(类似于Java中的方法)
面向对象:强调的是"对象",往往关注事情"找谁做",比喻成"指挥者",基本单位:类
面向过程和面向对象没有好坏之分,都是人们在生活中解决问题的手段之一:
在解决一些较小的问题时,往往选择"面向过程思想"
在解决一些较大的问题是,往往选择"面向对象思想"
面向对象基本思想(JavaSE)
面向接口思想
面向切面思想(真正的面向对象思想,手撕Spring框架源码)
封装,继承,多态
二、类与对象 1.1 什么是类类: 是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
属性: 就是该事物的状态信息。
行为: 就是该事物能够做什么。
代码如下(示例):
对象:是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。
1.3 类与对象的关系以及先后类是对象的模版,抽象
对象是类的实体,实例
类与对象的先后关系:
先类后对象
类的设计:
设计过程:
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.构造器中包含两个部分,显式部分和隐式部分,隐式部分代码优先于显式部分的代码



