文档状态:编辑中....
完备的系统在演变中浑然天成,要想在系统中添加新的功能,必须能够忍受带来的递归增长的问题.
暂无评论
自始至终,编程语言一步一步的提供着高程度的抽象给开发人员,从最开始的简单的自然语言的抽象,到数学语言的抽象的函数式编程,到待解决问题的抽象的面向对象,看起来,能解决问题的复杂程度取决于问题的抽象程度,程序员作为计算机与现实世界的沟通桥梁,同时承载着现实世界问题的待解决问题建模(问题空间)与所应用的计算机的机器建模(解空间),建立这两种空间的桥梁是很复杂的,这也是面向对象的挑战,编程语言的出现无非是从这两个空间上削弱复杂度,看起来,Java语言做的不错.
对象具有状态(内部数据),行为(方法),标识(类型)
没有不付出代价的特性.牺牲空间或者时间以获得安全或者效率上的出众
我们将类库的创建者称为类创建者 将使用类库API的称为客户端程序猿
客户端程序员使用类库时如果操作了敏感程度高的代码可能会触发安全故障[引入访问权限控制]
道理我都懂,那么仅仅使用public和privated不就行了吗?为什么还要有protected和default?
答: 为了解决继承的访问权限问题,谁让你引入继承
内存泄漏,通用诟病,如果将对象的控制权交付给程序员本身的化容易出现人为失误,出现内存泄漏
c++与java走了不同的道路,因为理念不同,c++追求效率,为了让程序猿获得更大的效率控制能力,复杂化了处理过程,程序员必须自己管理内存的分配,而java比较注重灵活性与安全性,引入了垃圾回收器,内存泄露的监控与防范交付给虚拟机灵活是必然的,但是机器毕竟不是人,会容易在效率上大打折扣.
异常控制,java引入了错误处理将异常看做为对象,而且在众多语言中地位颇高,
关于java语言的异常处理机制,目前没有深入过
数组越界
引入范围检查
没有被初始化的类型乱用(不适用方法内变量[“局部”变量])
基本类型自动数据初始化,自定义类类型引用默认NULL
局部变量不适用怎么办编译器警告使用构造器受c语言的静态绑定影响,方法在编译阶段绑定,那么问题来了,拥有一个这样的方法,子类型不断创造,但不影响方法的执行,那么就引入泛化概念吧,但是怎么解决静态绑定问题,我们这样做只是为了方法与类型分离,准确的说是方法与引用分离,泛化方法功能,那么,方法的地址应该是由动态创建的对象中含有的特定信息计算出来的,不像C++,为了实现这种功能,引入了virtual关键字,来告诉别人,这个方法是与类型分离的,不需要在编译期去计算方法的地址,由此看来java好像默默的给你做好了这件事,在这方面,看起来java更胜一筹.
使用动态绑定
使用访问权限控制使用单根继承使用容器,java提供了很多容器可选择,当然需要在性能与功能上做权衡c的链表可以看做为容器的一个具体实例当然这延伸出了新的问题-->转型问题..向上转型丢失身份那么有没有可能使容器存储记录对象的类型呢?解决方案:引入范型(参数化类型)[Java SE5]使用继承动态发生的组合(composition)叫做聚合(aggregation)
运算符
操作数
用于数组和容器的迭代,也可以迭代字符串foreach(char c:"i am very happy today"){ System.out.println(c+""); } //range为自己定制的Range foreach(int a:range(10)){ System.out.println(a+""); }
return与continue和break结合使用,类似goto,用起来还不错java限制的很,label只能紧邻循环体结构之上Only convertible int values and emun variables are permitted//以下代码就是错误的,注意char可以转int //switch目前只支持整数,char和emun,long也不行哦 String a = "missing"; switch(b){ }
将面向对象与class分离吧,类是面向对象的特性,但不是全部问题空间问题的抽象建模大概java设计者学习过算法吧:)[笑],个人以为这是看透了问题空间问题与问题的关系破坏了问题的独立性,现实生活中不也是这么,你以为面相对象是解决什么问题的对编译器来说,如果不想出现歧义的调用方法,那么就得在语法上限制方法,需要找一个东西唯一标识,那么我们就把它称为签名吧,一开始学c的时候我和同学讨论,c对方法的检查虽然简单,是啊,但是课本里至少讲一下吧,老师用看智障的眼神说,谁特么秀逗的在一个文件里写两个一模一样的方法名,但是面向对象引入重载后,就不得不谈了,方法之间必须有明确的界限,而且还要提到教育高度笑~不会自己思考么?如果不是学妹长得漂亮就不回答了....首先相当于c中的全局方法吧,没有对象我也想有方法啊?总不能为了实现一个简单的功能我必须创建对象吧,它能够在对象之前产生,所以你说在它里面使用this合适不?别说编译器给你检查这个问题了,在eclipse中文本编辑器都给你检查出红色波浪线,其实这样说过于轻率了,从设计思想来说吧,不可避免的比如你的兄弟节点想得知有多少兄弟们,人类可以通过观察计数,对于对象来说,他没有主动观察能力,只能靠外界信息传递,有必要提供这么一个信息接口,而且要独立在对象之外,放在类里面.可以定制更强大的sdk?最主要写起来方便自己不会定制一下?mdzz,再不济也可以用inport static 啊因为java不需要在语言级别解决平台移植问题,至于c++中的小打小闹用其他方式替代了区别很大,指针是自由的,引用并非自由,指针理论能操纵任意一块地址,但一旦引用的对象死亡,引用就再也不能用了这个我会专门的写一篇文章