面向对象
(java)和面向过程(c)区别
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用;
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
面向对就是高度实物抽象化、面向过程是自顶向下的编程
对象
是用来描述客观事物的一个实体
类:具有相同属性和方法的一组对象的集合。类是对象的抽象,对象是类的具体实现。
类
是一个抽象的概念,无法直接使用其属性和功能。要使用该类,就必须要对类进行实例化。所谓实例化,就是用关键字new来创建该类的对象。有了对象之后,通过对象调用类中的属性(成员变量)和功能(成员方法)。
类是对象的抽象,对象是类的实例化
类包含属性和方法
属性
成员变量 VS 局部变量
相同点:
1.定义变量的格式一样:数据类型 变量名=变量值
2.先声明,后使用
3.变量都有其对应的作用域
不同点:
1.成员变量在类中声明的位置不同 直接定义在类的{}内
2.局部变量声明在方法内,方法形参,代码块内,构造器形参,构造器内部变量
3.关于权限修饰符的不同
成员变量:可以在声明属性时,指明其权限,使用权限修饰符。(常用权限修饰符。public private protected 缺省)
局部变量:不可以使用权限修饰符
4默认初始值
成员变量:根据其数据类型,都有默认初始化值
局部变量:没有默认初始化值,在调用局部变量之前,要为其赋值
方法
描述类应该具有的功能
方法声明:
权限修饰符 返回值类型 方法名(形参列表)
public void/int 名称 可多个
static 特殊关键字 修饰方法 (不一定有)
权限修饰符 public
java规定的权限修饰符public(公共) private(私有) protected 缺省
体现结构被调用时的权限大小。
方法四个重点
1.方法重载:
同一个类 相同方法名
参数列表不同
如何确定具体调用哪个方法:方法名→参数列表
2.可变个数形态的方法
3.值传输机制:
如果参数是基本数据类型,实参赋值给形参的是真实储存的数据值
如果参数是引用数据类型,实参赋值给形参的是实参存储数据的地址值
返回值类型
有返回值 VS 无返回值
如果有返回值 必须在方法声明时,指定返回值类型,使用return关键字返回指定类型的变量或常量
无返回值,则生命是使用void来表示
4.递归方法:
一个方法体内调用它自己
方法递归包含一种隐式的循环,他会重复执行某段代码,但这种重复执行无须循环控制,递归一定要向已知方向递归,否则就会变成死循环。
例如
方法一:
循环求和1到100
int sum=0;
for(int i=0,i<=100;i++){
sun+=i;
}
方法二
递归
public int getSum(int n){
if(n==1){
return 1;
}else{
return n+getSum(n-1)
}
}
方法中不可定义方法
类和对象的使用
1.创建类,设计类的成员
2.创建类的对象
3.通过 对象.属性 或 对象.方法 调用对象的结构
内存解析
在内存区域中
虚拟机栈
用于存储局部变量
堆
存放对象实例
方法区
存储以被虚拟机加载的类信息,常量,静态变量