`
TonyLian
  • 浏览: 401455 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
    C语言中的联合,我还真的不太了解。但是Java中的继承(或称子类化)是面向对象的最基本特征,以此来做层次是再合适不过的了。       例如,在一个描述社会商品分类的层次中,可以通过使用多层次继承的抽象类来很形象地描述。这还带来了 安全 简洁 易扩展 的好处。         这一条很简单,就到这里了。     【Effective Java 学习笔记】系列连载专题请见: http://tonylian.iteye.com/categories/64208
《第5章 C语言结构的代替》       这章中主要讲解了相对于C语言,Java语言中语法结构中被省略掉的东西Java是如何替代的。这些被省略的东西的共性,也是它们被省略掉的重要原因就是它们都是面向数据的,而不是面向对象的。       如果不是C语言的程序员,作者也认可读者可以跳过此章。那么我也简单地写一点吧,因为这一章的道理都很简单明了。     【第19条】用类代替结构       C语言的结构体(struct),用类(class)来代替。       一个退化到只包含一些数据域,就大体上类似C语言的结构了。而且使用类的好处还有就是可以通过封装带来数据保护的好处(这不 ...
    其实这一条的题目应该再多几个字“在四中嵌套类中,优先考虑静态成员类”,这样才更不容易产生歧义。       所谓嵌套类(nested class)是指定义在另一个类内部的类。嵌套类存在的目的应该只是为了它的外围类提供 ...
    当一个类实现了一个接口的时候,这个接口被用做一个类型(type),通过此类型可以引用这个类的实例。除此之外,其他目的而定义接口是不合适的。       也就是形如: Interface objct = new Class(); //的形式       例:  List list1 = new ArrayList();  //List是接口,ArrayList是一个实现类       书中举了一个极端的例子——常量接口。即只有静态final域的接口,这是对接口的不良使用。       这两天,我也正在琢磨一件事情,就是在我的Framework中,作为业务JavaBean的超 ...
    今早上班路上(现在支持环保,走路上下班了),闻到一股刺鼻的汽车尾气的味道,突然想自己动笔算算小汽车的碳排放(刺鼻气体的排放咱还算不了)。       以一辆1.6升排量的自然吸气小轿车为例,我们做一下假设和简化: 1)平均油耗 7L/100km 2)平均车速 30km/h 3)平均发动机转速 2000转/分钟 4)使用的93#汽油密度 0.725kg/L 5)93#汽油成分 C8H18(异辛烷)93%;C7H16(正庚烷)7% (各种添加剂忽略) 6)自然吸气冲程过后缸内大气压为一个标准大气压 7)充分燃烧,消耗O2,只产生CO2和H2O 8)标准大气压下O2密度1. ...
转载一篇,以后研究C#时可能用得上。     C#和java是号称90%的相同加上10%的不同。因此当时我学习C#,阅读两种代码完全没有什么阻碍。 对C#了解得深入以后,来发表下对这两种语言各自特性的一些看法 比较起java和C#大相径 ...
这里要讨论的是,接口、抽象类、普通类 三者的一个组合: 首先是,接口定义了功能性的方法; 然后,一个抽象类实现了这个接口,作为骨架实现类,它完成了接口的一部分实现(默认实现) 最后是一个普通类,继承自这个抽象的股价实现类,并完成了抽象类中未实现的方法。   接口: public interface 交通运输able { void 装货(); void 卸货();  void 运输(); }   抽象类: public class 卡车 implements 交通运输able { public void 运输() { ...
    Java语言提供了两种机制,可以用来定义一个允许多个实现的类型:接口和抽象类。如果对它们的基本定义还不是很清楚请参考其它书籍。       接口和抽象类这二者比较起来,从特征来说,最明显的区别在于抽象类允许包含某些方法的实现,但是接口是不允许的。但是在使用方面还有一个更为突出的区别,就是抽象类是通过被子类继承来使用的;而接口是通过被实现来使用的。而Java是一种单继承机制的语言,所以就限制了抽象类的使用。(一个类只有一个超类或叫父类)当一个类已经继承了一个超类时,现在你再想因为一些原因让它再继承一个抽象类是不可能的(当然也有变通办法,就是先让这个抽象类继承那个超类,再把子类的超类改为 ...
    这一条是承接上一条的,所有为继承而设计的类都必须有充足的文档来精确地描述改写每一个方法所带来的影响。也就是要求文档中必须写明那些方法是要求改写的,那些是自用的。对于每一个公有或保护的方法或者构造函 ...
    继承(指的是子类扩展超类,并不包含接口)是实现代码重用的有力手段,但它并不总是完成这项工作的最佳工具。不适当地使用继承会导致脆弱的软件。       与方法调用不同的是,继承打破了封装性。换句话说子类 ...
身边的同学总在说“堆栈”“堆栈”的,一提起来就把“堆栈”放在一起,其实堆是堆,栈是栈,两者是有着区别的,我的学业不精,仅分析了以下的一些区别。     1. 申请方式栈(stack):由系统自动分配。 例如,声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间   堆(heap
    非可变类,这个名词可能并不是所有人都知道。所谓非可变类,就是具有如下特征的类:每个实例中包含的所有信息都必须在该实例被创建的时候就提供出来;并且在此对象的整个生命周期内固定不变。       Java平台中 ...
《第4章 类和接口》       类和接口是Java语言的核心,本章包含的一些指导原则,可以帮助你更好地设计出更加有用、健壮、灵活的类和接口。   【第12条】使类和成员的可访问能力最小化       要想区别一个设计良好的模块与一个设计不好的模块,最重要的因素是,这个模块对于外部的其它模块而言,是否隐藏了内部的数据和其他的实现细节。换句话说,就是模块的设计者是否对其进行了良好的封装。       经验表明,你应该尽可能地使每一个类或成员不被外界访问。也就是说,在保证与该模块相关的程序能够正确运行的前提下,尽可能使用最低可能的访问级别。那些一上来不加思索就统统 public 的做 ...
今天又重新整理了一下和集合类型相关的3篇文章,温故而知新。             Hashtable 是现代大多数程序员居家旅行, 不可不备的利器. 如 ASP.NET 程序员天天要打交道的 Application Items, Cache Items 均由 Hashtable 实现. 日常存储配置参数, 数据列, 我们也会用到 Hashtable 或是基于其的结构如 NameValueCollection 等等, .NET 2.0 推出后更增加了一个 System.Collections.Generic.Dictionary, 用法乍一看和 Hashtable 差不多, 甚至还有泛 ...
今天又重新整理了一下和集合类型相关的3篇文章,温故而知新。     1、什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和IList接口 灵活的设置数组的大小2、如何使用ArrayList 最简单的例子:   ArrayList List = new ArrayList(); for( int i=0;i<10;i++ ) //给数组增加10个Int元素 List.Add(i); //..程序做一些处理 List.RemoveAt(5) ...
Global site tag (gtag.js) - Google Analytics