精华内容
下载资源
问答
  • 一个类可以继承一个基类
    万次阅读
    2018-12-25 22:01:55

    接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个抽象的基类,让所有的Servlet都继承这个抽象基类,在抽象基类的service方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码,伪代码如下:

    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public abstract class BaseServlet extends HttpServlet {
        public final void service(HttpServletRequest request, HttpServletResponse response)
                throws IOException, ServletException {
            // 记录访问日志
            // 进行权限判断
        }

        protected abstract void doService(HttpServletRequest request, HttpServletResponse response)
                throws IOException, ServletException;
            // 注意访问权限定义成protected,显得既专业,又严谨,因为它是专门给子类用的
    }

    class MyServlet1 extends BaseServlet {
        protected void doService(HttpServletRequest request, HttpServletResponse response)
                throws IOException, ServletException {
            // 本Servlet只处理的具体业务逻辑代码
        }
    }

    父类方法中间的某段代码不确定,留给子类干,就用模板方法设计模式。

    备注:这道题的思路是先从总体解释抽象类和接口的基本概念,然后再比较两者的语法细节,最后再说两者的应用区别。比较两者语法细节区别的条理是:先从一个类中的构造方法、普通成员变量和方法(包括抽象方法),静态变量和方法,继承性等6个方面逐一去比较回答,接着从第三者继承的角度的回答,特别是最后用了一个典型的例子来展现自己深厚的技术功底。

    更多相关内容
  • //一个类可以从多个基类中派生。在派生由多个基类派生的多重继承模式中, //基类是用基类表语法成分来说明的,多重继承的语法与单一继承很类似, //只需要在声明继承的多个之间加上逗号来分隔 class B1 { public:...

    #include <iostream>
    using namespace std;
    //多重继承
    //一个类可以从多个基类中派生。在派生类由多个基类派生的多重继承模式中,
    //基类是用基类表语法成分来说明的,多重继承的语法与单一继承很类似,
    //只需要在声明继承的多个类之间加上逗号来分隔
    class B1
    {
    public:
        void output();
    };

    class B2
    {
    public:
        void output();
    };

    void B1::output()
    {
        cout << "call the class B1" << endl;
    }
    void B2::output()
    {
        cout << "call the class B2" << endl;
    }

    class A:public B1,public B2
    {
    public:
        void show();
    };

    void A::show()
    {
        cout<<"call the class A"<<endl;
    }

    int main()
    {
        std::cout << "Hello World!\r\n";
        A a;
        a.output();//该语句编译的时候会报错
        a.show();
        return 0;
    }

    派生类A是从基类B1和基类B2多重继承而来,二基类B1和B2各有一个output()函数,当类A对象a要调用a.output()时,编译器无法确定用户需要的到底是哪一个基类的output函数,而产生以上错误。

    #include <iostream>
    using namespace std;
    //多重继承
    //一个类可以从多个基类中派生。在派生类由多个基类派生的多重继承模式中,
    //基类是用基类表语法成分来说明的,多重继承的语法与单一继承很类似,
    //只需要在声明继承的多个类之间加上逗号来分隔
    class B1
    {
    public:
        void output1();
    };

    class B2
    {
    public:
        void output2();
    };

    void B1::output1()
    {
        cout << "call the class B1" << endl;
    }
    void B2::output2()
    {
        cout << "call the class B2" << endl;
    }

    class A:public B1,public B2
    {
    public:
        void show();
    };

    void A::show()
    {
        cout<<"call the class A"<<endl;
    }

    int main()
    {
        std::cout << "Hello World!\r\n";
        A a;
        a.output1();
        a.show();
        return 0;
    }

    展开全文
  • 主要介绍了ThinkPHP5.0框架控制器继承基类和自定义,结合实例形式分析了thinkPHP5.0控制器基类与继承相关定义与使用技巧,需要的朋友可以参考下
  • 定义一个Person ,结构如下图,为该添加输入输出流运算符重载。Person 以Public方式派生出一个Teacher,数据成员包括:int gh(工号);char* title(职称),为该添加输入输出流运算符重载,完成有参、无参、...
  • 派生基类继承的过程 ...基于上一讲中雇员的例子,写一个雇员和其派生-销售人员。这里只给出部分声明,大家先了解下派生过程。 class employee // 雇员 { public: employee(); // 构造函数 ~employee();

    派生类从基类继承的过程

    派生类从基类继承的过程可以分为三个步骤:吸收基类成员、修改基类成员和添加新成员。

    吸收基类成员就是代码复用的过程,修改基类成员和添加新成员实现的是对原有代码的扩展,而代码的复用和扩展是继承与派生的主要目的。

    基于上一讲中雇员的例子,写一个雇员类和其派生类-销售人员类。这里只给出部分声明,大家先了解下派生过程。

    class employee       // 雇员类
    {
    public:
        employee();        // 构造函数
        ~employee();       // 析构函数
        void promote(int); // 升级函数
        void getSalary();  // 计算工资
    protected:
        char *m_szName;    // 雇员姓名
        int   m_nGrade;    // 级别
        float m_fSalary;   // 工资
    };
    class salesman : public employee
    {
    public:
        salesman();
        ~salesman();
        void getSalary();    // 计算工资
    private:
        float m_fProportion; // 提成比例
        float m_fSalesSum;   // 当月总销售额
    };
    

    以上面的代码为例详细讲下三个步骤。

    吸收基类成员

    派生类从基类继承时首先就是吸收基类成员,将基类成员中除了构造函数和析构函数外的所有其他成员全部接收。这里要注意,基类的构造函数和析构函数都不能被派生类继承。

    上例中,employee类除构造函数和析构函数外的所有成员:promote(int)函数、getSalary()函数,以及数据成员m_szName、m_nGrade和m_fSalary,都被派生类salesman继承过来。

    修改基类成员

    派生类修改基类成员的方式有两种,
    1)是通过设置派生类声明中的继承方式,来改变从基类继承的成员的访问属性;
    2)是通过在派生类中声明和基类中数据或函数同名的成员,覆盖基类的相应数据或函数。一旦我们在派生类中声明了一个和基类某个成员同名的成员,那么派生类这个成员就会覆盖外层的同名成员。这叫做同名覆盖。需要注意的是,要实现函数覆盖不只要函数同名,函数形参表也要相同,如果函数形参表不同只有名字相同则属于前面所说的重载。

    上例中,salesman类的getSalary函数覆盖了employee类的同名函数。比如,我们定义了一个salesman类的对象A,则A.getSalary()调用的是salesman类中的getSalary函数而不是基类employee中的。

    添加新成员

    代码的扩展是继承与派生的主要目的之一,而添加新成员是实现派生类在基类基础上扩展的关键。

    上例中,派生类salesman就添加了两个新数据成员m_fProportion和m_fSalesSum。可见,能够添加新成员还是很方便的,我们在软件开发中可以根据实际需要为派生类添加新的数据成员或函数成员。

    上面说过,派生类不能从基类继承构造函数和析构函数。但是派生类同样需要有初始化和清理,所以我们需要为派生类添加新的构造函数和析构函数,就像上例中,派生类salesman中就添加了新的构造函数salesman()和新的析构函数~salesman()。

    展开全文
  • 一个派生类可以作为另一个派生基类 D. 基类成员被派生类继承以后访问权限保持不更多相关问题在商业洽谈中可以用你的热情来感染对方。()在商业计划书中,战略规划应该分阶段和分年份提出()。在商代有学者认为,...

    【多选题】下列关于派生类的叙述中,错误的是

    A. 派生类至少要有一个基类 B. 派生类中包括了从基类继承的成员 C. 一个派生类可以作为另一个派生类的基类 D. 基类成员被派生类继承以后访问权限保持不

    更多相关问题

    在商业洽谈中可以用你的热情来感染对方。()

    在商业计划书中,战略规划应该分阶段和分年份提出()。

    在商代有学者认为,( )与金(青铜)、玉一样,都是专门的礼用材料。

    在商、周之时,人性的普遍涵义指 ,所以“性”与“欲”常被关联在一起。

    在商业计划书电梯陈述中,主要描述什么内容?

    在商业计划书中,为了更好的展示项目,对于风险预测应尽量回避。( )

    下列选项不讲礼仪的是()。

    在商业企业,很多商品的定价都不进位成整数,而保留零头,这种心理定价策略称为( )策略。

    在商业计划书中的财务预测部分,投资人最关注:( )

    在家中接待访客的礼仪,哪一项是正确的?( )

    在商务交往中,尤其应注意使用称呼应该

    下列选项不讲礼仪的是()。

    在商业银行的资产管理中,流动性是一项重要原则,因此,商业银行应该保留尽可能多的现金准备。

    在商业、金融场所,以下哪种行为被认为是失礼的

    在家中接待访客的礼仪,哪一项是正确的?( )

    在商业社会中,()是每一个民事主体的基本权利,流动性是财产的基本属性。

    在商业模式创新的特点中,()是商业模式创新主观追求目标。

    在商、周之时,人性的普遍涵义指 ,所以“性”与“欲”常被关联在一起。

    在商代甲骨文有关于船的记载。()

    在唐朝,门下省认为中书省起草的法律不合适,要求其重新起草属于哪种监督模式?

    在商业模式画布的9大构成要素,其中价值主张的创新是商业模式的“魂”。

    在商务交往中,使用称呼时应注意?( )

    在商业交易过程中,()可以起到对合同的替代作用。

    在唱歌之前的心态中,我们应该做到的是()

    在商务场合,女性的发型可以是干练的短发,也可以披着长发,只要无头皮屑。

    在商业计划书制作过程中仅需要做一次深入调研就可以()。

    在商业计划书演示和沟通时,如果有不同于商业计划书的新想法,可以尝试新想法,要与时俱进()。

    在商人的文化中,可以看出天地神灵是主宰一切的

    在唱歌之前的心态中,我们应该做到的是()

    在唱歌之前的心态中,我们应该做到的是()

    在商人的观念中,具有生产优良产品,是自己的产品有信誉、站得住的思想。

    在商业计划书电梯陈述中,主要描述什么内容?

    在商务场合,女性的发型可以是干练的短发,也可以披着长发,只要无头皮屑。

    在商业中,人们常将战略选择凌驾于道德要求之上。说法不正确的是(    )

    在商业社会中,什么是每个民事主体的基本权利?

    展开全文
  • 主要介绍了C++编程中基类基类继承的相关知识,包括多个基类继承与虚拟基类等重要知识,需要的朋友可以参考下
  • 具体表现在以下几方面: 派生对象可以基类对象赋值。 可以用子类(即公用派生)对象对其基类对象赋值。如 A a1; //定义基类A对象a1 B b1; //定义A的公用派生B的对象b1 a1=b1; //用派生B对象b1对基类...
  • 3.不管以什么继承方式,派生对象除了公有继承基类中的公有成员可以访问外,其他的一律不能访问 我们先试一下public继承 #include <iostream> using std::cout; using std::endl; class Point { public: ...
  • 在我们用mybatis-generator生成实体的时候,会希望这些实体类继承一个基类,这个基类包含了实体共同的属性,如uuid,createdate等信息。 问题来了,直接在generatorConfig中添加rootclass如图所示是行不通的 ...
  • 今天重温C++的知识,当看到虚基类这点的时候,那时候也...(1)、obj 是一个虚拟继承的派生的对象 (2)、mem是从虚拟基类派生下来的成员 (3)、p是基类类型的指针 当这种情况下,p->mem会比obj.mem多了两个中间层
  • 在公用继承、私有继承和保护继承中,只有公用继承能较好地保留基类的特征,它保留了除构造函数和析构函数以外的基类所有成员,基类的公用或保护成员的访问权限在派生中全部都按原样保留下来了,在派生可以调用...
  • 声名一个基类vehicle,有私有成员maxspeed和weight,公有成员run()和stop(),以及构造和析构函数。 从vehicle派生bicycle和motorcar, bicycle有私有成员height, motorcar有私有成员seatnum,以及各自的构造函数和析构...
  • 继承基类与派生

    千次阅读 2019-11-20 00:42:59
        ...从一个类中派生出另一个类,原始被称为基类继承类成为派生,子继承父,父为基类,子为派生,则要实现继承,首先要出现基类即父类。     ...
  • 继承中的访问权限关系。 1.基类,父类,超类是指被继承,派生,子类是指...4.在C++中派生类可以同时从多个基类继承,Java 不充许这种多重继承,当继承个基类时,使用逗号将基类隔开. 5.基类访问控
  • C++学习 十五、继承(1)基类,派生前言继承的关系与继承基类, 派生基类派生构造函数,析构函数文件位置访问权限protected 前言 本篇开始学习C++的继承。 继承 C++的继承用于描述种is的关系。...
  • 自定义Qt类型时,如果想要使用Qt的特性,可以继承个基类,如下所示。 说明如下: QObject:无需显示的界面。 QWidget:纯C++UI,用于显示,适合单独C++ UI的场景。 QMainWindow:纯C++UI,用于显示,适合...
  • 【C++】C++继承和派生、虚基类

    万次阅读 多人点赞 2018-06-07 18:46:17
    派生则是继承的直接产物,它通过继承已有的一个或多个来产生一个新的,通过派生可以创建一种类族。 继承 基本概念 在定义一个类A时,若它使用了一个已定义B的部分或全部成员,则称A继承...
  • C++判断一个类是否继承自另一个类

    千次阅读 2020-09-03 16:14:33
    派生继承基类的接口,所以我们经常会把一个基类派生出的多个派生当作同一个类别。在某些函数或者中,我们可能希望只支持某一类别的输入,即只支持某个类型或者这个类型的派生,此时就需要判断输入类型是否...
  • c++继承 基类 派生 虚函数

    千次阅读 多人点赞 2020-06-15 19:25:39
    继承   的关系有组合...基类中不同访问限定符下(public、protected、private)的成员以不同的继承方式继承,在派生中的访问限定也不同,具体如下: 基类的布局优先于派生 #include<iostream> class
  • 第九章继承与派生 92 典型例题分析与解答 例题 1下列对派生的描述中 是错误的 A一个派生类可以作为另一个派生基类 B派生至少有一个基类 C派生的成员除了它自己的成员外还包含了它的基类成员 D派生中...
  • C++学习 十五、类继承(4)基类方法重载,重写,隐藏前言成员函数重载重写隐藏虚函数的重写与隐藏 前言 本篇区分C++方法中的概念:重载,重写,隐藏 成员函数重载 重载成员函数是对于内而言的: class A{ ...
  • 纯虚函数 、抽象 、多重继承 、二义性问题 、菱形继承 、虚基类 、从内存布局看虚继承的底层实现原理
  • 【c++】 继承 基类和子类

    千次阅读 2020-04-07 19:02:18
    基类可以派生出其他的,也可以成为父类或超类 子类:从基类中派生出来的 #include<iostream> #include<string> using namespace std; class Animal//父类 { public: string mouth; void ...
  • C++(11):继承基类的构造函数

    千次阅读 2022-04-09 11:00:16
    C++11运行派生通过using声明,直接使用基类的构造函数,从而省去不必要的构造函数透传: #include <iostream> using namespace std; class A{ public: A(int a = 10):m_a(a){} //基类的默认构造函数 ...
  • 鸡啄米在编程入门系列上一节中讲了公有继承方式的...在保护继承方式中,基类的公有成员和保护成员被派生类继承后变成派生的保护成员,而基类的私有成员在派生中不能访问。因为基类的公有成员和保护成员在派生...
  • 首先记住句话: 先父母,后客人,再自己 首先调用基类的构造函数,在派生的构造函数体执行之前会调用成员对象的构造函数来初始化成员对象,...可以看出来是先调用的基类的构造函数,在调用派生内部定义的...
  • 继承派生虚基类.rar

    2021-08-02 18:14:10
    在校学习C++的时候,实验课的题目。学生,留学生、研究生、留学研究生,包含了虚基类创建、多以及连续的继承派生,在主函数中调用实现各类内容。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 352,523
精华内容 141,009
热门标签
关键字:

一个类可以继承一个基类

友情链接: msTracker1.zip