语言[J]概论

文档状态:编辑中....


完备的系统在演变中浑然天成,要想在系统中添加新的功能,必须能够忍受带来的递归增长的问题.


暂无评论

Table of Contents

面向对象


说明

自始至终,编程语言一步一步的提供着高程度的抽象给开发人员,从最开始的简单的自然语言的抽象,到数学语言的抽象的函数式编程,到待解决问题的抽象的面向对象,看起来,能解决问题的复杂程度取决于问题的抽象程度,程序员作为计算机与现实世界的沟通桥梁,同时承载着现实世界问题的待解决问题建模(问题空间)与所应用的计算机的机器建模(解空间),建立这两种空间的桥梁是很复杂的,这也是面向对象的挑战,编程语言的出现无非是从这两个空间上削弱复杂度,看起来,Java语言做的不错.

五大特性


对象具有状态(内部数据),行为(方法),标识(类型)

设计目标


没有不付出代价的特性.牺牲空间或者时间以获得安全或者效率上的出众

安全性

我们将类库的创建者称为类创建者
将使用类库API的称为客户端程序猿
  1. 客户端程序员使用类库时如果操作了敏感程度高的代码可能会触发安全故障[引入访问权限控制]

    道理我都懂,那么仅仅使用public和privated不就行了吗?为什么还要有protected和default?
    答: 为了解决继承的访问权限问题,谁让你引入继承

    可是我为什么要引入继承?

  2. 内存泄漏,通用诟病,如果将对象的控制权交付给程序员本身的化容易出现人为失误,出现内存泄漏
    c++与java走了不同的道路,因为理念不同,c++追求效率,为了让程序猿获得更大的效率控制能力,复杂化了处理过程,程序员必须自己管理内存的分配,而java比较注重灵活性与安全性,引入了垃圾回收器,内存泄露的监控与防范交付给虚拟机灵活是必然的,但是机器毕竟不是人,会容易在效率上大打折扣.

  3. 异常控制,java引入了错误处理将异常看做为对象,而且在众多语言中地位颇高,
    关于java语言的异常处理机制,目前没有深入过

  4. 数组越界
    引入范围检查

  5. 没有被初始化的类型乱用(不适用方法内变量[“局部”变量])
    基本类型自动数据初始化,自定义类类型引用默认NULL

    • 局部变量不适用怎么办
      编译器警告
    • 自定义的类型包怎么初始化
      使用构造器

易维护性

受c语言的静态绑定影响,方法在编译阶段绑定,那么问题来了,拥有一个这样的方法,子类型不断创造,但不影响方法的执行,那么就引入泛化概念吧,但是怎么解决静态绑定问题,我们这样做只是为了方法与类型分离,准确的说是方法与引用分离,泛化方法功能,那么,方法的地址应该是由动态创建的对象中含有的特定信息计算出来的,不像C++,为了实现这种功能,引入了virtual关键字,来告诉别人,这个方法是与类型分离的,不需要在编译期去计算方法的地址,由此看来java好像默默的给你做好了这件事,在这方面,看起来java更胜一筹.
使用动态绑定

灵活性

高效性

内聚性

动态发生的组合(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+"");
    }
  //以下代码就是错误的,注意char可以转int
  //switch目前只支持整数,char和emun,long也不行哦
  String a = "missing";
    switch(b){

    }

至少会用


FAQ