一、学习三条主线
1、java类及类的成员,属性,方法,构造器,代码块,内部类
2、面向对象的三大特征:封装、继承、多态
3、其他关键字:this、super、static、final、abstract、interface、package等
二、
面向过程与面向对象的区别:
面向过程:OOP,分析问题的解决步骤,而后用 函数 把步骤按顺序一一实现并调用即可。
面向对象:POP,把构成问题的事务分解为各种对象,而建立对象的目的不是为了完成一个一个的步骤,而是描述某个事务在解决整个问题过程中发生的行为。
对于刚刚学完 C 的小白来说,面向对象的思想和思想可谓有点复杂。
如果把 俩个思想 “类比” 到一句话里面,异同就会十分明显。
另外,我习惯英文缩写,这样传递的信息十分简短方便,全称百度。
e.g. 下雨的时候,人们为了防止被雨淋湿打开了雨伞☔️。
面向过程解析:
步骤是:下雨了,打开伞,挡雨,都是动词。
编码实现:fall(),open(),prevent(),这 3 个函数一一对应上行的步骤如 fall() 代表下雨。
面向对象解析:
对象:我 、伞、 雨,都是名词。
编码实现:me,umbrella,rain
对象的行为:我可以打开伞、伞可以挡雨、雨可以下(下雨?️)
再以实际情况安排对象行为的顺序:雨下,我打开伞,伞挡雨。
编码实现:rain.fall(),me.open(),umbrella.prevent()
因此,面向过程是 把问题分解为若干个步骤,每个步骤实现为一个函数,按照顺序实现并在调用时传递数据给函数解答问题。
面向对象是 抽象出问题的各种对象,把数据和解决问题的方法封装在对象中,而后各个对象之间通过行为实现解答问题
三、类和对象
类:对一类事务的描述,是抽象的
对象:实际存在的每个事物的个体,也称作实例,instance
面向对象的设计重点就是类的设计,类的设计,其实就是类的成员的设计
类:细胞
属性 = 成员变量 = field
方法 = 成员方法 = 函数 = method
创建类的对象 = 类的实例化
四、步骤
1、创建类,设计类的成员
2、创建类的对象
3、通过对象.属性或对象.方法调用对象结构
五、对象的内存解析
1、堆:存放对象实例
2、栈:存储局部实例(虚拟机栈)
3、方法区:类信息,常量,静态变量,编译后的代码
六、成员变量(属性)与局部变量
1、数据类型 变量名 = 变量值
2、先声明 后使用
3、变量都有其对应的作用域
4、成员变量可以使用权限修饰符,局部变量不行
5、局部变量没有初始值,在使用前要先赋值
6、特别的,形参在调用时赋值即可
7、成员变量加载到heap,局部变量加载到stack
七、void 可以没有返回值
八、方法名:见名知意
九、数组对象的内存解析
1、新建数组没有地址,都是null
2、新建对象时,地址赋给数组,有值
3、输出没有地址的数组中的元素,则为空指针
4、引用类型的变量,只可能存在两类值:null或地址值(含变量的类型)
十、匿名对象
1、我们创建的显示对象,没有显示的赋给一个变量名
2、匿名对象只能调一次
十一、方法
1、重载:在同一个类中,允许存在一个以上同名方法,参数个数或参数类型不同即可
2、值传递:
基本数据类型:数据值
引用数据类型:地址值(含变量的数据类型)
3、递归:数学思想
十二、封装
1、对于使用者来说,不需要去了解每一个类的内容细节,只需要怎么用就行
2、高内聚(类的内部数据操作细节自己完成,不允许外部干涉)、低耦合(仅对外暴露少量的方法用于使用)
3、隐藏对象内部的复杂性,只对外公开简单的接口,便于外界的调用,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,把该暴露的暴露出来,这就是封装性的设计思想。
4、封装性的体现:不对外暴露的私有的方法;单例模式
十三、构造器(构造方法、constructor)
1、作用:创建对象
2、如果没有定义显示的定义类的构造器的话, 则系统默认提供一个空参的构造器
3、构造器定义格式:权限修饰符 类名(形参列表){}
4、一个类中的多个构造器构成重载
5、一旦显示的定义了构造器,系统就不再提供默认的空参构造器
6、一个类中,至少会有一个构造器
十四、属性赋值的先后顺序
1、默认初始化
2、显示初始化
3、构造器中赋值
4、通过对象.方法或对象.属性的方式赋值
十五、JavaBean
1、一种java语言写成的可重用组件
2、需满足:
(1)类是公共的
(2)有一个无参的公共的构造器
(3)有属性,且有对应的set、get方法
十六:this关键字
1、this可以用来修饰:属性、方法、构造器
2、this理解为当前对象或当前正在创建的对象
3、通常情况下省略,如果构造器、方法的形参和类的属性同名时,必须显示的使用this.方法,表明此变量是属性,而非形参
4、this调用构造器:
(1)在类的构造器中,显示的使用this(形参列表)的方式,调用本类中的其它构造器
(2)不能通过通过this(形参列表)方式调用自己
(3)this(形参列表)必须声明在当前构造器的首行
(4)构造器内部,最多只能声明一个this(形参列表),用来调用其他构造器
十七:package、import关键字
1、package关键字的使用:
(1)更好地实现项目中类的管理,提出了包的概念
(2)属于标识符,遵循标识符的命名规则
(3)同一个包下,不能命名同名的接口、类,不同的包下可以
(4)import 声明在包的声明和类的声明之间
(5)可以导入XXX包下的所有结构
(6)如果使用的是java.lang包下或当前包下定义的,则可以省略
(7)如果在源文件中,使用了不同包下的同名的类,则至少有一个类需要以全类名的方式显示
2、JDK中主要的包
(1)java.lang、java.net、java.io、java.util、java.sql、java.text
十八、MVC设计模式
1、model 模型层 dao 数据库操作
2、controller 控制层 业务 服务
3、view 视图层 utils ui