第四章 面向对象(上)
4.1抽象的含义
抽象(abstraction):从研究对象中抽取与研究有关的共性内容加以考察,形成对研究问题正确,简明扼要的认识;
4.2 类与对象
对象是对客观事物的抽象,类是对对象的抽象。类--一种抽象的数据类型
4.3 类的域(属性)与方法(操作)
域(也称属性或是数据成员):事物静态特征的抽象。
定义方法:类型 域变量名
方法(也称操作或成员方法):事物动态特征的抽象。
定义方法:【修饰符】返回值类型 方法名 (参数类型 参数1,...){ 方法体}
域和方法之间的关系:
1)类中定义的域变量可以被类中的所有方法访问。
2)局部变量仅限于定义它的那个方法,在使用前必须进行赋值初始化;如果局域变量与 类中的域变量重名,则在方法中对同名变量改变的是局部变量。
3)类中定义的方法可以进行递归调用。
4.4 对象
4.4.1 对象的创建
eg:A a = new A():该代码执行,系统会根据类模板产生一个对象(
(1).实质上就是将类中定义的属性复制到生成的对象中,这些属性虽然在类中定义,实际上是为对象服务,因此称为对象属性;
(2).当方法在调用时,系统会为方法开辟一个栈空间,用于存放方法中的局部变量和形式参数,并且方法在执行时还能访问复制到对象中的属性。在其执行完成后,栈空间被释放。也称为对象方法),
并在计算机内存中为此对象开辟一块新的独立内存空间。
对象的声明:eg:A a;此时只是产生了对象的声明,并没有任何对象的产生
而 A a = new A();是先执行new A()产生一个对象,再把这个新产生的对象赋予对象的声明
注:c++和java在此处的区别:
首先我们需要弄懂内存空间:内存空间分为 堆 和 栈
堆在应用程序中会一直存在,而栈在方法调用完毕后就释放
c++中用关键字new方式产生的对象在堆里,而“A a”方式产生的对象在方法栈中,a 作为引用能操作对象的原因在于:它在栈中保留了堆中对象的实际地址。
4.4.2 对象作为参数的特点
方法中的参数可以是基本数据类型,也可以是对象
二者区别:
1)基本数据类型作为参数在方法中的传递是值传递
2)对象是引用传递,当对象作为参数传递时,传递的是对象的地址,从始至终用的都是这一个对象
4.4.3 对象数组
eg : A [ ] my = new A[ 10 ];
//产生一个类型为A,可容纳10个A对象引用的数组对象,每个单元初始值为null
注意:不是产生10个A对象 !!!
如若要使对象数组当中的每个单元有值,则应补充如下代码:
for( int i = 0;i<10 ; i++){ my [i] = new A()}
4.4.4数组对象特点及常用方法
第五章 面向对象(中)
第六章 面向对象(下)