本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!
Java的封装性很好,拿访问控制符来讲,没有权限的类或方法是不能访问的。如public,都可访问;private,只有本类中方法可访问;protected位于两者之间,位于本包中对象可访问。
组合和继承都允许在新的类中放置子对象,组合是显式的,继承是隐示的。final的含义:常量数值则永不改变,对象引用则引用永不改变,但Java未提供任何对象永不改变的方法。所有private方法都隐式的指定为final,但覆盖只有非private的才行。
多态,分离做什么和怎么做,是数据抽象和继承后的第三种基本特征,消除类型之间的耦合关系。如工人和农民都要吃饭,干活则是不同的,并且可以添加新的功能。组合与继承,首选组合,因为它更加灵活,可以动态选择行为;
接口和内部类为我们提供一种将接口与实现分享的更加结构化的方法。抽象类是希望通过这个通用接口操纵一系列类,包括抽象方法的类就叫抽象类。接口允许创建者确定方法名、参数列表和返回类型,接口的域隐式的是static和final的。接口相当于多继承,可以有多个实现;而内部类可以协助当前类进行多继承。
内部类,将一个类的定义放在另一个类的内部定义,它拥有对外部类所有元素的访问权,创建不依赖于外部类。当然如果不需要,则可以将内部类声明为static,命名嵌套类,则它不产生默认指向创建它的外围类。内部类的好处之一是,可以协助外部类实现多继承,哈哈!同时接口也可以有内部类的,自动public和static。内部类不可以被覆盖,局部内部类不能有访问控件符。
在使用组合的过程中,要尽量避免方法名相同
代理:在类中添加一个原始类的成员变量,同时在新类中暴露该原始类的所有方法,重载其方法。同组合模式
向上转型:从一个较专用类型向较通用类型转换。
适配器:提供需要的所有接口实现类,根据传入参数,调用不同的接口去现实需求。例:正序和反序输出。
策略:提供所有方案,根据不同策略调用不同方案。声明:你可以用任何你想要的对象来调用我的方法,只要你遵循我的接口。
工厂:不同类调用同一接口,根据传递类型返回不同结果。如public interface Factory<T>{};
装饰器:使用分层对象来动态透明地向单个对象中添加责任。最初周围对象都具有相同的基本接口,即拥有一个可以向对象发送的公共消息集。
动态代理:每个混入的类都必须是某个接口的实现。
更多:
http://www.runoob.com/design-pattern/design-pattern-tutorial.html