专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 一文读懂父类调用子类的方法

一文读懂父类调用子类的方法

更新时间:2022-12-22 10:21:09 来源:星辉 浏览395次

通常是父类里作虚函数,子类里实现该函数或重写该函数。

先说父类作虚函数,子类作实现的。

一种应用就是,父类描述一种结构,好比要实现数据查询的,父类中的数据处理依赖于一个数据来源,该来源多是本地文件,也多是远程文件,甚至多是被包装在某个文件中的,但均可抽象为一个统一的接口,好比有读取和写入两种操做。这样父类中对数据的读取或写入可作成虚函数。

例父类:

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:code

class class1 : BaseCls {
    //实现方法
    public object Get(key){
        //经过某种协议对远程文件的操做
    }
    public object Set(key, value){
        //经过某种协议对远程文件的操做
    }
}

这样,咱们在使用时,根据须要,建立某个子类的实例后,不光可用Get,Set方法,并且能够调用父类的listAll方法,而父类的listAll会正确地调用子类的Get,对Get返回的结果进行整理等操做。orm

若是是重写,差很少的状况,只不过相比 虚函数/实现 的例子,是父类里已经实现了Get和Set,但若是子类要求用另外一种方式实现Get和Set操做,能够进行重写。

重写的做用一般是将读写操做重定向到别的地方,好比控制台输出,Console.Write(),一般讲是输出到控制台界面,但若是该方法能够被重写,那么咱们能够作一个子类继承自Console,而后重写一下Write方法,输出到咱们但愿的地方,好比文件。以后若是咱们经过咱们作的这个子类实现一个控制台实例,对他的Write,包括创建在Write基础之上的WriteLine(实际就是经过Write实现的),都会写到文件中,而不是控制台界面。

(Console的例子只是举例,实际状况可能不是这样的)对象

说简单一些,父类子类是多态的一种表现形式,一个父类可能是抽象出来一些子类的共性,多个子类继承父类这些共性。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>