在多态中成员函数的特点: 在编译时期,参阅引用类型变量所属类中是否有调用方法,如果有,编译通过,如果没有,编译失败! 在运行时期,参阅对象所属的类中是否有调用方法 总结:成员函数在多态调用时,编译看左边,运行看右边 在多态中成员变量的特点:无论编译还是运行,都参考左边(引用型变量的所属类) 在多态中,静态成员函数的特点: 无论编译还是运行,都参考左边 匿名内部类: 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; }
|