| 在多态中成员函数的特点: 在编译时期,参阅引用类型变量所属类中是否有调用方法,如果有,编译通过,如果没有,编译失败! 在运行时期,参阅对象所属的类中是否有调用方法 总结:成员函数在多态调用时,编译看左边,运行看右边 在多态中成员变量的特点:无论编译还是运行,都参考左边(引用型变量的所属类) 在多态中,静态成员函数的特点: 无论编译还是运行,都参考左边       匿名内部类: 1.   匿名内部类其实就是内部类的简写形式 2.   定义匿名内部类的前提:内部类必须实现一个类或者接口 3.   匿名内部类的格式:new  父类或接口(){定义子类的内容} 4.   其实匿名内部类就是一个匿名子类的对象,只是这个对象有点大,可以理解为带内容的对象 5.   匿名内部类中定义的方法最好不要超过三个   延时加载的单例设计模式的实例: 懒汉式: classSingle{     private staticSingle s=null;     privateSingle(){      }     public static Single getInstance(){        if(s==null){            synchronized(Single.class){               if(s==null){                   s=newSingle();               }            }        }        return s;     } } 饿汉式 classSingle{     private static finalsingle s=new Single();     privateSingle(){         }     public static Single getInstance(){        return s;     } }   装饰类(装饰设计模式):装饰设计模式比继承要灵活。避免了继承体系的臃肿。装饰类因为增强了已有对象,所以具备的功能和已有是相同的,只不过提供了更强的功能。所以装饰类和被装饰类通常都是属于一个体系中的。    增强for循环 语法: for(type 变量名:集合变量名 ) { … } 注意事项: 1.迭代变量必须在( )中定义! 2.集合变量可以是数组或实现了Iterable接口的集合类。 举例: public static int add(int x,int ...args)   {       int sum = x;       for(int arg:args)       {           sum += arg;       }       return sum;   }   
 
 public static int add(int x,int ...args) {          int sum = x;          for(int arg:args)          {                  sum += arg;          }          return sum; }              
 |