今日学习总结
一、面向对象【java语言的核心机制,最重要的内容,java语言的特色】
1、面向过程和面向对象的区别、
— 面向过程;主要关注点是:实现的具体过程,因果关系【集成显卡的开发思路】
*优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低
*缺点:采用面向过程的方式开发很难解决非常复杂的业务逻辑,另外面向过程的方式
导致软件元素只见那的“耦合度”非常高,只要其中一环出问题,整个系统受到影响,
导致最终的软件“扩展力差,另外,由于没有独立的概念,所以无法达到组件服用,
— 面向对象;主要关注点是:主要关注对象【独立体】能完成哪些功能。【独立显卡的开发思路】
*优点:耦合度低 ,扩展力强。更容易解决现实世界当中更复杂的业务逻辑。组件复用
性强
*缺点:前期投入成本较高,需要进行独立体的抽取,大量的系统分析与设计。
— c语言是纯面向过程的、c++半面向对象、java纯面向对象
— 现在出现的一些新的编程语言多数都是面向对象的,人在认识现实世界的时候是以面向对象的方式
— 面向对象更符合人的思维方式。
2、面向对象的三大特征。
— 封装
— 继承
— 多态
所有面向对象的编程语言都有这三大特征
3、采用面向对象的方式开发一个软件,生命周期当中:【整个生命周期中贯穿使用oo面向对象方式】
— 面向对象的分析:OOA
— 面向对象的设计:OOD
— 面向对象的编程:OOP
4、类的对象的概念
— 什么是类?
* 类在现实世界当中是不存在的,是一个模板,是一个概念,是人类大脑思考抽象的结果。
* 类代表了一类事物。
* 在现实世界当中,对象A与对象B直接具有共同特征,进行抽象总结出一个模板被称为类。
— 类和对象的概念
* 对象是实际存在的个体,现实世界当中现实存在
— 描述一下整个软件开发的过程;
* 程序员先观察现实世界,从现实世界当中寻找对象
* 寻找了N多个对象之后,发现所有的对象都有共同特征
* 程序员在大脑中形成了一个模板【类】
* java程序员可以通过java代码来表述一个类
* j ava程序中有了类的定义
* 然后通过类就可以创建对象
* 有了对象之后,可以让对象直接协作起来形成一个系统。
— 类—【实例化】--->>对象
— 对象又被称为实例/instance
— 对象---【抽象】--->类
— 重点:
* 类描述的是对象的共同特征。
* 共同特征例如:身高特征
* 这个身高特征在访问的时候,必须先创建对象,通过对象去访问这个特征。
因为这个特征具体的某个对象上之后,值不同。有的对象1.60,有的对象2.60.
5、一个类主要描述什么信息呢?
— 一个类主要描述的是 状态+动作
— 状态信息:名字、身高、性别、年龄
— 动作信息:吃、唱歌、跳舞、学习
— 状态--->一个类的属性
— 动作--->一个类的方法
— 类(
属性://描述对象的状态信息
方法://描述对象的动作信息
)
— 注意:状态和动作当具体到某个对象上之后,发现最终的结果可能不一样。
— 对象和对象之间有共同的特征,但是具体到对象之后又数据的差异。
6、类的定义
— 语法结构;
【修饰符列表】class 类名{
}
— 学生类,描述所有学生对象的共同特征:
学生对象有哪些状态信息;
*学号(int)
*姓名(String)
*性别(boolean)
*年龄(int)【是一个属性,是一个属性,是数据就应该有数据类型】
*住址(String)
。。。。
学生对象有哪些动作信息;
*吃饭
*睡觉
*学习
*玩
*唱歌
*跳舞
。。。。
7、重点:属性通常是采用一个变量的形式来完成定义的。
int on;
int age;
String name;
String address;
Boolean sex;
8、java语言中包括两种数据类型
— 基本数据类型
byte
short
int
long
float
double
boolean
char
-
— 引用数据类型
String SUN提供的
System SUN提供的
。。。。。
二、封装
1、封装之后,对于一个事物来说,看不到这个事物复杂的一面,只能看到该事物简单的一面
— 对外提供简单的操作入口。电视剧就是很好的例子,人们只需要会使用遥控器就行。
— 封装之后才会形成真正的“对象”,真正的“独立体”
— 封装就意味着以后的程序可以重复使用。并且这个事物应该适应性比较强,在任何场合都可以使用
— 封装之后,对于事物本身,提高了安全性。
2、封装步骤
— 所有属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问。
— 对外提供简单的操作入口,也就是说以后外部程序想要访问所属属性,必须通过入口进行访问。
— 对外提供两个公开的方式,分别是set修改和get读取方式进行访问。
— setter and getter方法没有static 关键字
— 有static关键字修饰的调用方法为:类名.方法名(实参)
— 没有static关键字修饰的调用方法为:引用.方法名(实参)
三、
1、构造方法语句:
【修饰符列表】构造方法名(形式参数列表){
方法体;
}
2、构造方法的方法名必须和类名一致
3、构造方法的作用是什么?
— 创建对象
— 给成员变量赋值【初始化成员变量】
4、构造方法应该如何调用?
— new 构造方法名(实参);在堆内存中开辟空开存储对象
5、如果一个类没有提供任何构造方法,系统默认提供无参数构造方法。
如果一个类已经收到的提供了构造方法,那么系统不会再提供任何构造方法。
6、成员变量到底什么时候赋值?
— 构造方法的时候系统会默认赋值
— 构造方法的时候也可以手动赋值。
7、 构造方法主要用来创建类的实例化对象。可以完成创建实例化对象的初始化工作。,声明格式。
构造方法修饰词列表 类名(方法参数列表);
8、构造方法修饰词列表:public 、proteced、private
9、 类的构造方法和普通方法一样可以进行重载
10、构造方法具有的特点:
— 构造方法名称必须类名一致
— 构造方法不具有任何返回值类型,即没有返回值。关键字void 也不能加入
加入后就不是构造方法了。就成为普通的方法,
— 任何类都有构造方法,如果没有显示的定义,则系统会给该类定义一个默认的构造器,
这个构造器不含任何参数,如果显示的定义了构造器,系统就不会创建默认的不含参数的构造器了。
四、static关键字:
1、static修饰的变量叫做静态变量。
2、static修饰的方法叫做静态方法。
3、static还可以定义静态语句块。
4、static定义的静态语句块在类加载阶段执行,并且只执行一次,并且自上而下的顺序执行。
5、static修饰的方法叫做静态方法
— 一般情况下工具类中的方法大部分都是静态方法。
— 静态方法不用创建对象也能直接访问该方法。
6、成员方法
— 成员方法必须使用引用. 调用
7、静态方法
— 可以使用类名. 方式调用。也可以使用引用. ,即使用的是引用. ,底层还是用的是类名.
— 静态方法中不能直接访问非静态数据。
— 静态方法中不能使用this
8、static修饰的变量叫做静态变量
9、变量分类:
— 局部变量
— 成员变量(实例变量,非静态变量)
— 静态变量(方法区)
10、什么时候变量声明成静态变量?
— 如果这个属性所有的对象都有,并且这个属性的值是相同的,则该属性声明成静态的属性
11、成员变量和静态变量是从什么时候开始赋值的?
— 成员变量:创建Java对象的时候初始化。
— 静态变量:在类加载阶段赋值,并且只赋值一次。
五、this关键字:
1、this是什么?
— this是一个引用类型。
— 在堆中每一个java对象上都有this,
— this保存内存地址指向自身。
2、this能用作哪些地方?
— this可以用在成员方法中
— this可以用在构造方法中
语法:this(实参);
通过一个构造方法去调用另一个构造方法
目的:代码重用。
this(实参):必须出现在构造方法的第一行。
3、this不能用在静态方法中。
— 静态方法的执行根本不需要java对象的存在。直接使用类名. 的方式访问。
而this代表的是当前对象。所以静态方法中根本没有this。