接口与内部类看起来像是一种简单的代码隐藏机制,将某些类置于另外一些类的的内部,内部类了解它的外围类(surroundingclass),且能够与之通信。1.接口:接口可以包含数据成员,它们隐含都是static和final的。接口只提供了形式,而未提供任何具体实现。接口被用来建立类与类之间的“协议(protocol)”。接口中被定义的方法必须是public的。2.java的多重继承:接口的组合使用。使用接口的核心原因:1)为了向上转型为不止一个的基类型,2)与抽象基类相同,防止客户端程序员创建该类的对象,并确保仅仅是建立一个接口。3.组合接口时带来的名字冲突:避免想要组合的不同接口中使用相同的方 Read More
posted @ 2013-02-23 15:38 Thriller1 Views(361) Comments(0) Diggs(0) Edit
多态——“封装”通过合并特征和行为来创建新的数据类型。“实现隐藏”则通过“私有化(private)”将接口和实现分离开来。多态的作用:消除类型之间的耦合关系。又名:动态绑定dynamicbinding/后期绑定latebinding或运行时绑定run-timebinding1.向上转型:将对某个对象的引用视为对其基类型引用的做法被称作“向上转型”,不用管导出类的存在,编写的代码只是与基类打交道。2.方法调用绑定:前期绑定(earlybinding)程序执行前进行绑定---由编译器和链接程序实现。后期绑定(latebinding)在运行时,根据对象的类型进行绑定。3.扩展性:多态——我们所做的代 Read More
posted @ 2013-02-20 22:29 Thriller1 Views(211) Comments(0) Diggs(0) Edit
复用类复用代码的两种形式:继承和组合1.组合语法(composition):将对象的引用置于新类中,编译器不是简单地为每个引用创建缺省对象,初始化这些引用:在以下位置进行:1)在定义对象的地方,(在构造器吧被调用之前被初始化)2)类的构造器中3)需要使用这些对象之前,(惰性初始化lazyinitialization)2.继承语法(inheritance):为了继承,一般的规则是将所有的数据成员都指定为private,将所有的方法指定为public,调用基类继承而来的方法,使用关键字super3.初始化基类:基类/导出类,当创建一个导出类的对象时,该对象包含了一个基类的子对象(subobject Read More
posted @ 2013-02-20 22:27 Thriller1 Views(189) Comments(0) Diggs(0) Edit
隐藏具体实现——如何将变动的事物与保持不变的事物相互隔离。1.包的使用:通过使用Package,访问权限受到影响。包明的唯一性,使得java程序解析,通过classPath以及包名解析到对应的类文件。类名相同,产生冲突,通过包名限定,来处理冲突问题。2.java访问权限修饰符:(accessspecifier),public,protected,private包访问权限:没有指定访问权限,则默认为包访问权限。包中的类可以相互访问。Public接口访问权限:Private:你不可以去碰Protected:继承访问权限:创建新包,能访问父类的public跟protected成员;同一包内,能访问包 Read More
posted @ 2013-02-20 22:23 Thriller1 Views(448) Comments(0) Diggs(0) Edit
初始化与清除1. 以构造器确保初始化:构造器的命名(类名),创建对象时,将会为对象分贝存储空间,并调用相应的构造器,确保了在操作对象之前,对象已经被初始化了。2. 方法重载:(method overloading)构造器的重载;重载方法的区分,(参数的顺序不同---不建议,会使得代码难以维护)。3. 基本类型的重载:传入的实际参数类型“小于”方法中声明的形式参数类型,实际参数的类型就会被“提升”。Char型略有不同,若无法接受char参数,就会把char直接提升至int型。4. 以返回值区分重载方法:在java中,是行不通的。5. 缺省构造器:类中没有构造器时,编译器会自动创建一个缺省构造器; Read More
posted @ 2013-01-24 14:03 Thriller1 Views(195) Comments(0) Diggs(0) Edit
1. java操作符:几乎所有的操作符都只能操作“基本类型(primitives)”。唯一的例外是“=”、“==”和“!=”,这些能操作所有的对象。除此之外,String类还支持“+”和“+=”。2. 优先级:操作符与括号决定表达式中计算的优先级。3. 赋值:“=”是指“取右边的值”。明白基本数据类型与对象赋值的区别。前一个是实际数值即内容的赋值,后者是指“引用”的赋值。4. 别名问题:对象的参数赋值—引用,引起的问题。5. 正则表达式(regular expression):参考JDK文档中的java.util.regex.Pattern。?表示可能有,也可能没有\d表示一个整数,在java Read More
posted @ 2013-01-23 14:24 Thriller1 Views(247) Comments(0) Diggs(0) Edit
在我们使用Spring框架的同时,我们都会在项目中的web.xml中,进行一些Spring的配置,(通过反射完成相应类的调用以及生成)用来在项目使用Spring。下面是几个常用的web.xml中配置spring。1. org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter(jpa中的延迟加载过滤器)属性private String entityManagerFactoryBeanName;用来记录entityManagerFactory的名称值,默认值为entityManagerFactory;继承OncePer... Read More
posted @ 2013-01-22 16:29 Thriller1 Views(609) Comments(0) Diggs(0) Edit
1.java不同于C,C++,纯粹的面向对象。通过“引用”操作对象。2.java的存储:1)寄存器2)堆栈(stack),java的对象引用存储于其中,java对象并不存储于其中,3)堆(heap):通用的内存池,存放所有的java对象。4)静态存储:是指存放在固定的位置5)常量存储:存放在程序代码内部,永远不会改变,而嵌入式系统中,常量跟代码是分开的,存放于ROM。6)非RAM存储:典型的例子,流对象和持久化对象3.基本类型:存放于堆栈中,类型所占用的存储空间已经被确定,是Java具有可移植性的原因之一。4.高精度数字:BigInteger和BigDecimal,它们没有对应的基本类型。5. Read More
posted @ 2013-01-21 13:54 Thriller1 Views(197) Comments(0) Diggs(0) Edit
对象:拥有行为、状态、标识将对象作为服务提供者:通过此思想来进行编程将具体的实现隐藏(通过接口和实现相分离,类内部访问的控制)复用具体的实现(优先使用组合,后使用继承)理解is-a跟is-like-a的关系。多态的实现,可互换的对象(向上转型)java面向对象通过“后期绑定”,当向对象发送消息时,被调用的代码到运行时才能被确定,对存在的方法的参数和返回值执行类型检查(此类语言被称为弱语言),但并不知道确切被执行的代码。抽象基类和接口:抽象基类的子类必须实现父类的抽象方法,否则继承类仍然是个抽象类。接口提供了接口与实现的完美分离。对象的创建、使用和生命周期:java使用堆的内存池来动态地创建对象 Read More
posted @ 2013-01-20 23:33 Thriller1 Views(169) Comments(0) Diggs(0) Edit
1.常用到AOP的地方:日志记录、安全检查、事务管理等(避免了在多处编写同样的方法)2.AOP的三种织入方式:1)编译期,2)类装载器,3)运行期 两种典型的实现方式:1)AspectJ-- 最全的面向切面框架,2)Spring 的AOP实现-通过引用AspectJ,常与Spring的IOC整合一起使用 利用动态代理实现AOP--实现了InvocationHandler的接口 JDK动态代理--通过JdkDynamicProxyFactory来实现 CGLiB是运行时生成动态字节码3.常用的术语:Aspect切面、Joinpoint连接点、Pointcut切入点、Advice增强、Int... Read More
posted @ 2013-01-18 17:19 Thriller1 Views(356) Comments(1) Diggs(1) Edit