java29接口的应用
2016-05-15 17:46
417 查看
为什么使用接口?
因为不同的子类对于某种方法的实现方式不同,所以需要子类自己重写接口中的函数。
接口的默认访问级别为public,对于继承他的子类,访问权限不能比接口的访问权限小,也就是要大于等于,最高权限就是public,不能再比他高了,所以只能是public。
工厂方法模式
思路: 将生成对象的代码封装在一个新类中,使用时只需调用其中的方法即可。方便的对生成对象的类进行删减。
class PrinterFactory{
//返回值类型 Printer,返回一个Printer的对象p;
public static Printer getprinter(int flag){
Printer p = null;
if(flag == 1){
p = new HPPrinter();
}
else if(flag == 0){
p = new CanonPrinter();
}
return p;
}
public class Test{
public static void main(String[] args){
//根据用户的选择,生成相应的打印机对象;
//并且向上转型为Printer类型,
//返回为Printer类型,函数名为getprinter(int flag);
Printer p = PrinterFactory.getprinter(flag);
p.open();
p.print(“test”);
p.close();
}
}
定义为静态函数可以直接使用类名.函数名来调用。方法之中的变量只是局部变量,并不能被方法之外所识别,所以并不能使用public,static,private,protected…之内的修饰符。
因为不同的子类对于某种方法的实现方式不同,所以需要子类自己重写接口中的函数。
接口的默认访问级别为public,对于继承他的子类,访问权限不能比接口的访问权限小,也就是要大于等于,最高权限就是public,不能再比他高了,所以只能是public。
工厂方法模式
思路: 将生成对象的代码封装在一个新类中,使用时只需调用其中的方法即可。方便的对生成对象的类进行删减。
class PrinterFactory{
//返回值类型 Printer,返回一个Printer的对象p;
public static Printer getprinter(int flag){
Printer p = null;
if(flag == 1){
p = new HPPrinter();
}
else if(flag == 0){
p = new CanonPrinter();
}
return p;
}
public class Test{
public static void main(String[] args){
//根据用户的选择,生成相应的打印机对象;
//并且向上转型为Printer类型,
//返回为Printer类型,函数名为getprinter(int flag);
Printer p = PrinterFactory.getprinter(flag);
p.open();
p.print(“test”);
p.close();
}
}
定义为静态函数可以直接使用类名.函数名来调用。方法之中的变量只是局部变量,并不能被方法之外所识别,所以并不能使用public,static,private,protected…之内的修饰符。
相关文章推荐
- (四)JAVA使用POI操作excel
- spring配置
- Struts2中的ModelDriven机制及其运用
- Java方法参数传递
- JavaWeb学习总结(1)------JavaWeb开发入门
- JavaSE_遍历Properties
- Java 泛型,了解这些就够用了。
- 第1章 Web 应用开发概述
- Spring 的 SpEL
- 几种排序算法的分析与java实现
- java断言的学习
- 严重: Exception sending context initialized event to listener instance of class org.springframework.we
- Java编程思想[一]对象
- JavaSE_遍历List的3种方法
- 大公司c#&.net转型java的原因有哪些?
- JavaSE_Set遍历的2种方法
- Java 多线程扩展之JMM
- Java文件与IO(二)之字符流
- JAVA Calendar
- JavaSE_遍历Map的4种方法