继承的格式

本文讲解了面向对象编程中继承的概念,以及如何使用Java定义父类和子类。通过讲师和助教的例子,展示了子类如何继承父类的属性和方法。

继承是多态的前提
在这里插入图片描述
继承的格式

package cn.ly.Day.seven.seventeen;
/*
* 在继承的关系中,“子类就是一个父类”,也就是说,子类可以被当作父类看待。
* 例如父类是员工,子类是讲师,那么“讲师就是一个员工”,关系,is-a。
*定义父类的格式:(一个普通的类定义)
* public class 父类名称{
* //...
* }
* 定义子类的格式
* public class 子类名称 extends 父类名称{
* //...
* }
*/
public class Demo01Extends {
    public static void main(String[] args) {
      //创建一个讲师子类对象
     Teacher teacher=new Teacher();
     teacher.method();
     //创建一个助教子类对象
        Assistant assistant=new Assistant();
        assistant.method();

    }
}

### C++ 中继承的语法格式 在 C++ 中,继承是一种重要的面向对象编程特性,允许派生类(子类)从基类(父类)继承属性和行为。以下是关于继承的一些基本概念以及其语法格式: #### 基本语法 C++ 的继承通过 `:` 符号实现,后面跟上继承方式和基类名称。继承的方式分为三种:`private`、`protected` 和 `public`。 ```cpp class DerivedClass : access-specifier BaseClass { // 类体 }; ``` 其中: - **DerivedClass** 是派生类的名字。 - **access-specifier** 表示访问修饰符,可选值为 `private`, `protected`, 或 `public`。 - **BaseClass** 是基类的名字。 默认情况下,如果未指定访问修饰符,则对于类来说,默认是私有继承 (`private`);而对于结构体来说,默认是公有继承 (`public`)。 #### 访问权限的影响 不同类型的继承会影响成员的访问级别: - 如果使用的是 `private` 继承,那么基类中的公共成员会变成派生类中的私有成员[^4]。 - 如果使用的是 `protected` 继承,那么基类中的公共成员会变成派生类中的受保护成员[^4]。 - 如果使用的是 `public` 继承,那么基类中的公共成员仍然是派生类中的公共成员[^4]。 #### 示例代码 下面是一个简单的例子展示如何使用继承: ```cpp #include <iostream> using namespace std; // 定义基类 class Base { public: void displayBase() { cout << "This is the base class." << endl; } }; // 定义派生类 class Derived : public Base { public: void displayDerived() { cout << "This is the derived class." << endl; } }; int main() { Derived obj; obj.displayBase(); // 调用基类的方法 obj.displayDerived(); // 调用派生类的方法 return 0; } ``` 此程序展示了如何定义一个基类并从中派生出另一个类,同时演示了如何调用基类和派生类中的方法[^2]。 #### 多重继承与虚拟继承 多重继承是指一个类可以从多个基类继承。然而,这可能导致菱形继承问题——即同一个基类被多次继承的情况。为了避免这种歧义,可以使用虚拟继承 (Virtual Inheritance),确保只有一个共同祖先实例存在。 ```cpp #include <iostream> using namespace std; class A { public: int value = 10; }; class B : virtual public A {}; class C : virtual public A {}; class D : public B, public C {}; int main() { D d; cout << d.value << endl; // 输出 10,仅有一个共享的 'value' return 0; } ``` 在此示例中,由于采用了虚拟继承机制,即使 `D` 同时继承自 `B` 和 `C`,也只会有一份来自 `A` 的成员变量副本[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值