1.面向对象的概述
- 面向对象 注重的是对象 将类实例化成对象来使用
- 面向过程 注重的是过程编程
- 使用了面向对象,还是会使用面向过程
- 掌握 靠渐悟
2.类与对象之间的关系
- 类:抽象出来的,是一个大类,代表着是总体
- 对象:实例化出来的,代表的是单个,某一个X
- 类的两个成员
- 属性(变量)
- 行为(方法)
- 面向对象完成功能的三步骤
- 类的定义
- 有哪些属性
- 有哪些方法
- 对象的创建
- 使用new的关键字来进行创建
- 两种创建方式
- 数据类型 对象名 = new 数据类型
- new 数据类型 匿名对象 一般用于只调用一次的对象当中
- 对象的调用(属性或者方法)
- 对象名.属性
- 对象名.方法
3.类的内存解析
- 参考数组中的内存解析
4.类的成员之一 成员变量
- 语法:还没有学到的知识点:四大修饰符 public
[修饰符1] class 类名{
[修饰符2] 数据类型 成员变量名 [= 初始化值];
}
- 成员变量:声明在类当中,方法之外 整个作用域在类当中
- 局部变量:声明在方法之中或者其他位置 整个作用域在方法当中
-- 相同点
- 变量声明的格式相同: 数据类型 变量名 = 初始化值
- 变量必须先声明、后初始化、再使用。
- 变量都有其对应的作用域。只在其作用域内是有效的
- 不同点
1. 声明位置和方式
(1)实例变量:在类中方法外
(2)局部变量:在方法体{}中或方法的形参列表、代码块中
2. 在内存中存储的位置不同
(1)实例变量:堆
(2)局部变量:栈
3. 生命周期
(1)实例变量:和对象的生命周期一样,随着对象的创建而存在,随着对象被GC回收而消亡, 而且每一个对象的实例变量是独立的。
(2)局部变量:和方法调用的生命周期一样,每一次方法被调用而在存在,随着方法执行的结束而消亡, 而且每一次方法调用都是独立。
4. 作用域
(1)实例变量:通过对象就可以使用,本类中直接调用,其他类中“对象.实例变量”
(2)局部变量:出了作用域就不能使用
5. 修饰符(后面来讲)
(1)实例变量:public,protected,private,final,volatile,transient等
(2)局部变量:final
6. 默认值
(1)实例变量:有默认值
(2)局部变量:没有,必须手动初始化。其中的形参比较特殊,靠实参给它初始化。
5.类的成员之二 方法
- 语法
[修饰符] 返回值类型 方法名([形参列表])[throws 异常列表]{
方法体的功能代码
}
- 方法的重载
在同一个类当中有同名方法的存在,我们就把这种方法叫做方法的重载
特点:
参数列表(参数的类型)不同,也就构成方法的重载
返回值类型不同,不构成方法的重载
解决的问题:
在一个类当中,避免了一直起方法名的困扰,使用相同的方法名
怎么能刚好调用到你要使用的那个方法呢?
方法的重载中,方法名必须是一样的
传进去的参数是什么类型的,那么就调用的对应的参数类型的方法
- 可变个数的形参
特点:
1. 可变参数:方法参数部分指定类型的参数个数是可变多个:0个,1个或多个
2. 可变个数形参的方法与同名的方法之间,彼此构成重载
3. 可变参数方法的使用与方法参数部分使用数组是一致的,二者不能同时声明,否则报错。
4. 方法的参数部分有可变形参,需要放在形参声明的最后
5. 在一个方法的形参中,最多只能声明一个可变个数的形参
- 参数传递机制:
值传递 基本数据类型的时候:直接传递的是他自己本身的值
引用数据类型的时候:传递的是他的地址的值
- 递归:方法自己调用自己(类似于循环,但是递归要保证你的程序慢慢的能够执行完毕,死龟!)
- package : 打包关键字
- import :导包的关键字
- 封装:就是将该隐藏的藏起来,该暴露的暴露出来
使用private关键字将我们的属性进行私有化- 特殊的方式进行访问 get/set方法来进行访问私有的变量】
四种权限修饰符 public private 受保护的 默认的
- 构造器:初始化属性中的值
会有一个默认的无参构造器
其他的有参数的构造器(构造器存在重载的情况)
- 阶段性的知识补充
属性的赋值过程
JAVABean(工具包)
UML类图 +public -private ___构造函数 (awt:double):int