关于类继承

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于类继承相关的知识,希望对你有一定的参考价值。

以前看书的时候知道了is-a ,has-a等关系,也看懂了书上的那些代码,可是自己写起来的时候才发现问题。还是要多多练习,很多概念性的东西才能明白。

随手写的代码:

#include<iostream>
#include<string>
using namespace std;
class Book
{
    public:
    void page(int p)
    {
        cout<<"此书共有"<<p<<""<<endl;
    };
    void name(string n)
    {
        cout<<"The book of this name is:"<<n<<endl;
    };
};
class toolbook:public Book
{
    public:    
        void page();
        void name();
};
int main()
{
    string ne = "刺猬心声的博客";
    int pg = 7;
    Book book;
    book.page(pg);
    book.name(ne);
    string ne2="刺猬心声的github";
    int pg2= 8;
    toolbook tol;
    tol.page(pg2);
    tol.name(ne2);
    return 0;
}

类的派生,如果写了函数就要写函数体,不然会报错,,因为派生类的定义会覆盖基类的函数定义,说道这个想起了final和override:

override 说明符

可使用 override 关键字来指定在基类中重写虚函数的成员函数。
语法

function-declaration override;

override 仅在成员函数声明之后使用时才是区分上下文的且具有特殊含义;否则,它不是保留的关键字。
使用 override 有助于防止您的代码中出现意外的继承行为。

final 说明符
可以使用 final 关键字指定无法在派生类中重写的虚函数。您还可以使用它指定无法继承的类。
语法

function-declaration final;

class class-name final base-classes

final 只有在函数声明或类名称后使用时才是区分上下文的且具有特殊含义;否则,它不是保留的关键字。

以上是关于关于类继承的主要内容,如果未能解决你的问题,请参考以下文章

关于继承的总结

JS面向对象 关于类的封装继承多态

如何覆盖继承的嵌套类中存在的虚拟方法

关于Java的特点之继承

关于继承

php如何实现多继承?