对于抽象类的认识
来源:互联网 发布:华南理工网络教育学费 编辑:程序博客网 时间:2024/04/27 05:55
如果一个concrete类Wrapper 继承了一个抽象类AbstractWrapper ,且这个子类override了其中的一个方法isCorrect()。
private final AbstractWrapper Wrapper = new Wrapper();
Wrapper.isCorrect() 调用的是子类的方法,而
Wrapper.stop()等调用的其他方法是调用的抽象类的方法。
实际调用的方法,是new关键后的类决定的,而不是由这里的AbstractWrapper 决定的。。。
private final AbstractWrapper Wrapper = new Wrapper();
我这个概念一直不清晰!!!
实际上,如果一个类中有一个方法是抽象的,那么这个类就是抽象的。
但是如果类被定义为抽象的,在这个类中,即可以有抽象方法,也可以有非抽象方法。
public File getString() {}
public abstract int stop(final String Path) throws IOException, InterruptedException;
方法getString是一个非抽象方法。这样的方法子类可以定义方法去override,也可以直接使用。按需求而定。
方法stop是一个抽象类。这样的方法子类中必须定义方法去override才能被调用。可以看到这个方法完全没有方法体而getString有{}。
而实际的代码是:
private final AbstractWrapper Wrapper;
public Task(final AbstractWrapper Wrapper) {
this.graphWrapper = graphWrapper;
}
这就是所谓的面向接口编程,即程序代码并不关心真正实现的是什么类,只关心是否实现了公共接口规定的功能。
而实际上完全可以把抽象类当接口用。据guru说,在c++中是没有接口,只有抽象类。
另外设计模式中的template模式也是类似的概念。
我还没有开始看。。。羞愧啊。。。
- 对于抽象类的认识
- 抽象类的认识
- 对于抽象类的总结
- 对于抽象类的理解
- 对抽象类的认识
- 对于java类加载器的认识
- 对于类和对象的简单认识
- 对于Portlet的认识
- 对于SSH的认识
- 对于UIWindow的认识
- 对于ajax的认识
- 对于计算机语言的认识
- 对于ajax的认识
- 对于MVC的认识
- 对于SQLite的认识
- 对于Java的认识
- 对于抽象类与接口的理解
- 对于抽象的理解
- Webcore中文本资源编解码
- batch update For Sql
- 不可或缺的delphi基础技巧
- 在程序中调用外部程序,用process返回命令执行结果以及抓取错误信息的方法
- asp.net输出文件是添加bom
- 对于抽象类的认识
- creating and drawing on a new UIImage
- WebCore中的http响应信息维护
- 一起由回调函数引起的血案
- J2EE项目异常处理
- 文件管理_2
- ppt download
- ppt download
- jQuery 常用方法总结