- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java面向对象程序设计第四章
主要内容 什么是抽象 类与对象及其关系 类中定义的属性(域)与方法(操作) 对象 构造方法 类成员属性和方法的其它修饰符 包(Package) 抽象的定义 抽象(abstraction)是从被研究对象中舍弃个别的、非本质的、或与 研究主旨无关的次要特征,而抽取与研究有关的共性内容加以考察, 形成对研究问题正确的简明扼要的认识。 类与对象及其关系 对象是对客观事物的抽象。 类是对对象的抽象,在语言中是一种抽象的数据类型。 类的定义在Java中可简述为 class 类名{ } 它们的关系是,对象是类的实例,类是对象的模板。 类中定义的属性(域)与方法(操作) 注意: 以类为模板产生对象,实质上就是将类中定义的属性或方法代码拷贝到生成的对象当中。 当属性为普通数据类型时,其值就在对象内部当中;而当为引用时,引用的对象在对象的外部。 类中定义的属性可以被类中所有的方法所访问。 方法中的形式参数和定义的局部变量的作用域仅限于方法,局部变量在使用前必须进行赋值初始化。如果局部变量和类中的属性变量重名,则在方法中对同名变量改变的是局部变量。 局部变量应用举例 class FighterPlane1 { String name=su30; int missileNum; void init(String _name) { String name = _name; System.out.println(name); System.out.println(this.name); } public static void main(String args[]) { FighterPlane1 fp = new FighterPlane1(); fp.init(su35); } } 类中定义的方法的递归调用 用Java打印菲波那契数列的第10项(1,1,2,3,5,…) public class TestSeq { public static int fseq(int n) { if(n0) return -1; //进行参数校验 if(n==0||n==1) return 1; else return fseq(n-1)+fseq(n-2); } public static void main(String args[]) { System.out.println(fseq(10)); } } 输出结果为89 递归问题解读 递归问题:一个较为复杂的问题,可以被分解成为若干相对简单且类同的子问题,如此进行分解直到这样的子问题可以直接求解,这样的问题就是递归问题。 递归程序直接或间接的调用自身。 当递归的规模很大时很容易造成内存空间不足而出现问题,因此,往往需要将递归转为循环进行求解 对象的产生 对象的引用 要把产生的对象和遥控器相连接,需要下面的代码: fp = new FighterPlane(); 对象的产生和对象的声明不是一个概念,有声明时可以没有对象,正像有遥控器时可以没有电视机一样。 当声明被赋予特定对象后,此时,声明就被另一个概念“引用”所取代,也就是说,此时可以通过引用对对象进行控制了。 对象的内存空间 内存空间分为堆和栈,当在程序中发生函数调用时,为被调函数在栈 中分配空间,当函数调用完毕后,栈释放。Application程序中的入 口函数main,作为一个特殊的函数,其非静态变量都存放在栈中(静 态变量放在堆中),fp也不例外,但产生的对象则放在堆里。如图所示 对象作为参数的特点 普通数据类型作为参数传递是值传递,而对象是引用传递。 public class X { private static int a = 0; public static void main(String [] args) { modify(a); System.out.println(a); } public static void modify(int a) { a++; } } 本程序的输出为0,因为a++是对形式参数进行自增,而不是对 象属性a进行自增。 对象的引用传递举例 class IntClass { int value; } public class RunIntClass { public static void modifyValue(IntClass s,int val) { s.value =
文档评论(0)