父类调用子类方法
2014-05-08 00:00
232 查看
一般是父类里做虚函数,子类里实现该函数或重写该函数。
先说父类做虚函数,子类做实现的。
一种应用就是,父类描述一种结构,比如要实现数据查询的,父类中的数据处理依赖于一个数据来源,该来源可能是本地文件,也可能是远程文件,甚至可能是被包装在某个文件中的,但都可抽象为一个统一的接口,比如有读取和写入两种操作。这样父类中对数据的读取或写入可做成虚函数。
例 父类:
而对应不同的数据来源,有不同的子类,子类中实现该数据源的连接,比如操作本地文件的,读取和写入操作被重载为对文件的读写。
例 子类1:
例 子类2:
这样,我们在使用时,根据需要,创建某个子类的实例后,不光可用Get,Set方法,而且可以调用父类的listAll方法,而父类的listAll会正确地调用子类的Get,对Get返回的结果进行整理等操作。
如果是重写,差不多的情况,只不过相比 虚函数/实现 的例子,是父类里已经实现了Get和Set,但如果子类要求用另一种方式实现Get和Set操作,可以进行重写。
重写的作用通常是将读写操作重定向到别的地方,比如控制台输出,Console.Write(),通常讲是输出到控制台界面,但如果该方法可以被重写,那么我们可以做一个子类继承自Console,然后重写一下Write方法,输出到我们希望的地方,比如文件。之后如果我们通过我们做的这个子类实现一个控制台实例,对他的Write,包括建立在Write基础之上的WriteLine(实际就是通过Write实现的),都会写到文件中,而不是控制台界面。
(Console的例子只是举例,实际情况可能不是这样的)
说简单一些,父类子类是多态的一种表现形式,一个父类多是抽象出来一些子类的共性,多个子类继承父类这些共性。
好处是:
1.精简代码,方便后期维护。对于共性只用修改父类就能够影响继承其的子类。
2.父类引用指向子类对象的可以降低程序的耦合性。
先说父类做虚函数,子类做实现的。
一种应用就是,父类描述一种结构,比如要实现数据查询的,父类中的数据处理依赖于一个数据来源,该来源可能是本地文件,也可能是远程文件,甚至可能是被包装在某个文件中的,但都可抽象为一个统一的接口,比如有读取和写入两种操作。这样父类中对数据的读取或写入可做成虚函数。
例 父类:
class BaseCls { //举例方法,该方法是公有的,具体实现代码不写了 public object listAll(){ //方法中会用到Get方法 } //两个虚方法,需要子类重载 //abstract是C#中虚方法的关键字,php和java我不会 //这两个虚函数是不用实现代码的,仅表明存在这两种操作,具体代码。需要到子类中实现 public abstract object Get(key); public abstract object Set(key, value); }
而对应不同的数据来源,有不同的子类,子类中实现该数据源的连接,比如操作本地文件的,读取和写入操作被重载为对文件的读写。
例 子类1:
class class1 : BaseCls { //实现方法 public object Get(key){ //对磁盘的操作 } public object Set(key, value){ //对磁盘的操作 } }
例 子类2:
class class1 : BaseCls { //实现方法 public object Get(key){ //通过某种协议对远程文件的操作 } public object Set(key, value){ //通过某种协议对远程文件的操作 } }
这样,我们在使用时,根据需要,创建某个子类的实例后,不光可用Get,Set方法,而且可以调用父类的listAll方法,而父类的listAll会正确地调用子类的Get,对Get返回的结果进行整理等操作。
如果是重写,差不多的情况,只不过相比 虚函数/实现 的例子,是父类里已经实现了Get和Set,但如果子类要求用另一种方式实现Get和Set操作,可以进行重写。
重写的作用通常是将读写操作重定向到别的地方,比如控制台输出,Console.Write(),通常讲是输出到控制台界面,但如果该方法可以被重写,那么我们可以做一个子类继承自Console,然后重写一下Write方法,输出到我们希望的地方,比如文件。之后如果我们通过我们做的这个子类实现一个控制台实例,对他的Write,包括建立在Write基础之上的WriteLine(实际就是通过Write实现的),都会写到文件中,而不是控制台界面。
(Console的例子只是举例,实际情况可能不是这样的)
说简单一些,父类子类是多态的一种表现形式,一个父类多是抽象出来一些子类的共性,多个子类继承父类这些共性。
好处是:
1.精简代码,方便后期维护。对于共性只用修改父类就能够影响继承其的子类。
2.父类引用指向子类对象的可以降低程序的耦合性。
相关文章推荐
- python基础之类的继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
- python基础----继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
- PL/SQL小技巧一个:在子类中怎么调用父类被重载的方法
- Python开发基础-Day20继承实现原理、子类调用父类的方法、封装
- python3 继承 在子类中如何调用父类中的方法
- Python子类调用父类内属性的方法
- C#中子类调用父类的实现方法
- 子类无参构造调用父类有参构造方法
- Android代码学习-嵌套类,嵌套接口,匿名类,接口引用,子类调用父类的方法
- JavaScript子类用Object.getPrototypeOf去调用父类方法解析
- 子类实现父类的抽象方法,父类调用抽象方法
- 【Python】Python中子类怎样调用父类方法
- JavaSE8基础 多态 子类重写了父类的普通方法 父类引用调用子类中重写的方法
- PHP类中子类调用父类方法
- 子类调用父类方法(super关键字)
- Java子类调用父类的有参和无参的构造方法
- java方法重写的时候,一个调用父类还是子类方法的问题
- java基础:父类与子类之间变量和方法的调用
- 父类引用调用子类的方法 反射和转型
- Python中子类怎样调用父类方法