面向对象的相关的概念
类:抽象的,描述了该类的所有对象具有的数据和功能,
类是模版。
对象:具体的,体现了对应类里的数据和功能,任何一个具体
的事物都可以对应为某一个类的对象。
面向对象编程:把程序用的数据和功能分配到不同类中,通过对象去体现。
解决复杂的业务问题
a)把复杂的问题进行分解--》利用面向对象编程分解
b)每一个具体的问题处理---》利用面向过程
使用类
定义类
语法
class 类名{
//数据--成员变量
语法:[修饰符] 数据类型 变量名1 [=值1],...;
//功能--成员方法(不加static的方法)
语法:
public 返回值类型 方法名(参数列表){
}
}
类是抽象的-》通过对象才能体现其数据和功能
创建对象
new 类名(构造器参数列表);
创建对象
1)开辟内存空间,在堆里创建一个对象
2)返回刚创建的对象地址
对象不能直接使用---》通过引用才能使用
定义引用
语法:类名 引用变量名;
引用操作对象-》需要和对象有关系-》通过赋值建立关系(引用把对象地址存储起来)
语法:类名 引用变量名=new 类名(构造器参数列表);
引用怎么操作对象的数据和功能
语法:引用.数据或功能
对象和引用的对比
1)对象存储在堆中,存储真实的业务数据
2)引用如果是局部变量,存储在栈中,存储是对象的地址。
简单理解:对象类似于电视,引用类似于电视的遥控器。
内存分析
速度 存储内容
栈: 块 局部变量
堆: 慢 new 的对象
局部变量和引用变量存储位置
a)局部变量在栈中
b)成员变量在堆中
基本类型和引用类型存储的数据
a)基本类型存储的是业务数据
b)引用类型存储的是地址
注意点
1)方法在调用的时候,参数传递,实际参数给形式参数赋值
2)对象可以被多个引用所指向 ,其中一个引用改变了对象,其他引用也可见。
3)一个引用也可以指向多个对象,但是同一时刻只能指向一个对象。
构造器
作用:在创建对象为对象初始化数据(成员变量)。
定义构造器
语法:
public 类名(参数列表){
//构造器初始化代码
}
创建对象的过程
1)开辟内存空间,在堆里创建一个对象
2)通过刚创建的对象,调用匹配参数的构造器
3)返回刚创建的对象地址
注意点:
1)构造器定义后,不能直接用对象调用-在new对象的时候自动调用
2)不能有返回值类型-》默认为void(不能写),可以写return;(提前结束构造器)
3)名字必须和类名相同(区分大小写)
4)没有定义构造器,会自动添加空构造器,一旦显示添加构造器,那么就不会自动添加
空构造器,而空构造器通常需要使用(a)继承 b)反射...),所以需要手动添加空构造器
构造器重载:多个构造器参数不同,则形成重载
构造器重载好处:根据不同的对象初始化需求选择不同构造器。
this关键字
理解
1)系统自动定义的当前类(this所在类)类型的引用变量。
2)this指向的对象:当前对象(调用了当前方法的对象)
3)当前方法:成员方法,构造方法,构造块,(不能是static 块和方法)。
this的使用
1)this.成员变量
2)this.成员方法
3)this(构造器参数);---》在构造器中调用其他构造器,重载已有构造器代码
语法:
1)必须是构造器
2)必须是第一句