首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

修改继承的成员变量不会影响基类

的原因是继承是一种面向对象编程的概念,它允许一个类(子类)继承另一个类(基类)的属性和方法。在继承关系中,子类会继承基类的成员变量,但是子类对这些成员变量的修改不会影响基类的对应成员变量。

这是因为在继承中,子类会创建自己的成员变量副本,这些成员变量与基类的成员变量具有相同的名称和类型。当子类对继承的成员变量进行修改时,实际上是在操作自己的成员变量副本,而不是基类的成员变量。

这种设计有以下几个优势:

  1. 封装性:基类的成员变量可以被子类继承和使用,但是子类无法直接修改基类的成员变量,从而保护了基类的数据完整性和安全性。
  2. 灵活性:子类可以根据自身的需求对继承的成员变量进行修改和扩展,而不会影响其他继承同一基类的子类。
  3. 可维护性:由于子类对继承的成员变量进行的修改不会影响基类,因此在修改子类时不需要担心对其他代码产生意外的影响。

在实际应用中,修改继承的成员变量常见的应用场景是在子类中对基类的成员变量进行初始化或者重新赋值,以满足子类特定的需求。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):https://cloud.tencent.com/product/cdb
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iothub
  • 移动推送服务(信鸽):https://cloud.tencent.com/product/tpns
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯区块链服务(TBCS):https://cloud.tencent.com/product/tbcs
  • 腾讯元宇宙(Tencent Metaverse):https://cloud.tencent.com/solution/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++私有成员会被继承

1.派生间接访问私有成员继承中,私有成员在派生中是“不可见“,这种”不可见“是指在派生成员函数中,或者通过派生对象(指针,引用)不能直接访问它们。...在派生还是能够通过调用共有函数方式来间接地访问私有成员,包括私有成员变量和私有成员函数。考察如下程序。...中,由于A成员变量i和成员函数privateFunc()都是私有的,所以在B成员函数中无法直接访问到它们。...2.私有成员会被继承吗 如果中并没有提供访问私有成员公有函数,那么其私有成员是否“存在“呢?还会不会继承呢?...综上所述,私有成员一定存在,也一定被继承到派生中,从大小也可以看出派生包含了私有成员,读者可自行考证。只不过收到C++语法限制,在派生中访问私有成员只能通过间接方式进行。

2.4K41

C++中私有成员会被继承

1.派生间接访问私有成员继承中,私有成员在派生中是“不可见“,这种”不可见“是指在派生成员函数中,或者通过派生对象(指针,引用)不能直接访问它们。...在派生还是能够通过调用共有函数方式来间接地访问私有成员,包括私有成员变量和私有成员函数。考察如下程序。...中,由于A成员变量i和成员函数privateFunc()都是私有的,所以在B成员函数中无法直接访问到它们。...2.私有成员会被继承吗 如果中并没有提供访问私有成员公有函数,那么其私有成员是否“存在“呢?还会不会继承呢?...综上所述,私有成员一定存在,也一定被继承到派生中,从大小也可以看出派生包含了私有成员,读者可自行考证。只不过收到C++语法限制,在派生中访问私有成员只能通过间接方式进行。

2.3K20

【Kotlin】Kotlin 面向对象 ( | 成员变量 | 成员方法 | 封装 | 继承 | 多态 )

方法定义 ---- 方法定义 : 使用 fun 关键字 , 在中定义方法 , 在该方法中可以访问对象成员变量 ; /** * 定义学生 * * 定义字段 : 其含有一个字符串字段 ,...父 : open 关键字使用 : ① 打开继承 : 只有在前使用 open 关键字 , 只有打开了该类 , 才能有继承该类 ; ② 允许方法重写 : 允许方法重写 , 只有 open 函数 ,...才能被子类重写 ; /** * 定义父 * * open 关键字作用 : 打开继承 , 只有打开了该类 , 才能有继承该类 * 允许方法重写 , 只有 open...子类 : 继承 并 重写方法 ; /** * 子类代码 * * 继承 : 使用 冒号 ":" , 表示继承 */ class Son : Father() { //重写父方法...测试继承 : /** * 测试继承 */ fun main() { //创建子类对象 var son = Son(); //调用子类对象继承方法 son.name

60020

继承与隐藏:Java中父成员变量神秘禁忌

摘要 在Java中,子类继承了父成员变量,但不能直接覆盖(或称为隐藏)父成员变量。...子类可以声明与父相同名称成员变量,但它不会真正地覆盖父成员变量,而是在子类中创建一个新成员变量,与父成员变量形成隐藏关系。...4.2 可通过方法实现灵活性 尽管不能直接覆盖父成员变量,子类仍然可以通过方法来访问和修改成员变量。这种间接方式可以实现灵活性,同时还能维护继承关系一致性。...通过在父中提供合适getter和setter方法,子类可以在需要时访问或修改成员变量。...通过提供适当getter和setter方法,子类可以间接地访问和修改成员变量,同时保持代码清晰性和可维护性。

35920

【C++】继承 ⑨ ( 继承成员变量同名处理方案 )

一、继承成员变量同名处理方案 1、继承成员变量同名场景说明 子类 继承 成员 , 如果 子类 中定义了 与 父成员变量 同名 变量 , 子类 仍然 可以 继承 同名 成员变量...; 子类成员变量继承自父成员变量 名称 出现相同情况 , 使用 域作用符 :: 对同名 成员变量 进行区分 ; 2、使用域作用符区分同名成员变量 子类中使用 域作用符 :: 处理同名成员变量方案...: 继承自父成员变量 , 使用 父名称::成员变量名称 替代 成员变量名称 , 如 : Parent 是父名称 variable 是父变量名称 如果子类中也定义了 variable...在 外部 , 通过 子类对象名.父名::变量方式 , 访问 继承自父 成员变量 ; Child child; // 访问 子类对象 child 中 继承自 父 b 成员 child.Parent...成员变量 b 赋值后 , 打印结果 , 发现 父成员 值为 10 , 子类成员值是 随机值 ; 使用 child.b 为 子类成员变量 b 赋值 , 打印结果为 20 , 可以与 父成员变量 b

28520

为什么Java中成员变量不能被重写?成员变量在Java中能够被重写么?不会重写成员变量,而是隐藏成员变量访问隐藏域方法

这篇文章讨论了Java面向对象概念中一个基本概念--Field Hiding(成员变量隐藏) 成员变量在Java中能够被重写么?...不会重写成员变量,而是隐藏成员变量 Java文档中对隐藏域定义: Within a class, a field that has the same name as a field in the superclass...意思就是: 在一个中,子类中成员变量如果和父成员变量同名,那么即使他们类型不一样,只要名字一样。父成员变量都会被隐藏。在子类中,父成员变量不能被简单用引用来访问。...而是,必须从父引用获得父被隐藏成员变量,一般来说,我们不推荐隐藏成员变量,因为这样会使代码变得难以阅读。...其实,简单来说,就是子类不会去重写覆盖父成员变量,所以成员变量访问不能像方法一样使用多态去访问。

3.5K40

Java继承中static成员函数重写

在java中,static成员函数是否可以被重写呢? 结论是,你可以在子类中重写一个static函数,但是这个函数并不能像正常非static函数那样运行。...static in testClass1 16 tc2.SMothod(); //输出结果为 static in testClass2 17 } 18 } 从结果中可以看到,当我们用父实例引用...(实际上该实例是一个子类)调用static函数时,调用是父static函数。...原因在于方法被加载顺序。 当一个方法被调用时,JVM首先检查其是不是方法。如果是,则直接从调用该方法引用变量所属中找到该方法并执行,而不再确定它是否被重写(覆盖)。...如果不是,才会去进行其它操作(例如动态方法查询),具体请参考:方法加载

1.7K40

Python变量成员变量使用注意点

之前在用python写一个项目,发现一个很恶心bug,就是同由一个生成两个实例之间数据竟然会相互影响,这让我非常不解。...,add作用是分别对x和y做出修改。...然后构造一个实例a,对实例a值进行修改,最后构造实例b。...但是那是在我们用同一个引用情况下,比如对于[]对象append方法就是公用一个变量了;但是对于赋值语句来说,如果在中对变量使用了赋值语句,那么python就会生成一个该对象副本,以后操作都是基于这个副本而不会对原来对象造成影响...这样就解释通上面的现象了。 那么为了杜绝自己忘记变量和实例变量区别导致本不想公用变量时候公用了变量,最好办法就是在每个中使用变量时候重新初始化一下,这样就不会导致意外了。

1.5K30

C++中派生成员访问形式

C++中派生成员访问形式主要有以下两种: 1、内部访问:由派生中新增成员继承成员访问。 2、对象访问:在派生外部,通过派生对象对从继承成员访问。...1、私有继承访问规则 当继承方式为私有继承时,public成员和protected成员继承后成为派生private成员,派生其它成员可以直接访问它们,但是在外部通过派生对象无法访问...private成员在私有派生中是不可直接访问,所以无论是派生成员还是通过派生对象,都无法直接访问从继承private成员,但是可以通过提供public成员函数间接访问。...当继承方式为公有继承时,public成员和protected成员继承到派生中仍作为派生public成员和protected成员,派生其它成员可以直接访问它们。...private成员在私有派生中是不可直接访问,所以无论是派生成员还是派生对象,都无法直接访问从继承private成员,但是可以通过提供public成员函数直接访问它们。

2.3K70

【C++】继承 ⑩ ( 继承机制中 static 静态成员 | 子类中访问父静态成员方法 )

一、继承机制中派生 static 关键字 1、子类继承静态成员 子类继承静态成员 : 父 ( ) 中 使用 static 关键字 定义 静态成员变量 , 可以被所有的 子类 (...派生 ) 共享 ; 2、父静态成员访问控制权限改变 继承自 父 静态成员变量 , 仍然遵循 继承中 子类 访问控制特性 , public 公有继承 : 父成员 在 子类 中 , 访问控制权限...成员 ; 父 private 成员 仍然是 private 成员 ; protected 保护继承 : 父成员 在 子类 中 , 访问控制权限 变为 protected , 公有成员...成员 ; 父 private 成员 仍然是 private 成员 ; private 私有继承 : 父成员 在 子类 中 , 所有成员访问控制权限 变为 private , 所有成员...; 或 对象名.静态成员名 child.c = 30; 方式 , 访问 继承自 父 静态成员 ; 4、静态成员使用要点 参考 【C++】静态成员变量 ( 静态成员变量概念 | 静态成员变量声明 |

35510

JVM运行时数据区,静态变量,成员变量,变量

局部变量成员变量区别 ①声明位置 局部变量:方法体们中,形参,代码块们中 成员变量中方法外 - 变量:有static修饰 - 实例变量:没有static修饰 ②可用修饰符 局部变量...:final 成员变量:public、protected、private、final、static、volatile、transient ③值存储位置 局部变量:栈 实例变量:堆 变量:方法区...④作用域 局部变量:从声明处开始,到所属]结束口实例变量:在当前中“this.”(有时this.可以缺省),在其他中“对象名.”访问 变量:在当前中“名.”...或“对象名.”访问 ⑤生命周期 局部变量:每一个线程,每一次调用执行都是新生命周期口 实例变量:随着对象创建而初始化,随着对象被回收而消亡,每一个对象实例变量是独立 变量:随着初始化而初始化...,随着卸载而消亡,该类所有对象变量是共享

1K20

【小家java】中静态代码块、构造代码块、静态变量成员变量执行顺序和继承逻辑

其中继承,是java中最有学问一点也是最相对来说最难理解一些东西,本文针对于此,做一些实例分析,希望能够帮助大家理解java中继承机制 2、栗子 情况一:当父和子类有同名同类型属性时,使用时需要注意...这算编译器bug吗?哈哈 情况三:继承中最基本加载顺序,不做过多解释。...因为false指明了装载过程中,不进行初始化。不初始化则不会执行static块。...我觉得脑子里应该浮现出一个这样知识点: Java中赋值顺序: 1、父静态变量赋值 2、自身静态变量赋值 3、父成员变量赋值和父块赋值 4、父构造函数赋值 5、自身成员变量赋值和自身块赋值...b变量赋值语句还没有执行哦~~~) 而对象初始化顺序为:成员变量 -> 普通代码块 -> 构造函数 因此这一波过后:a=110了。

1.4K20

C++:40---继承成员变化关系

一、派生继承成员规则 ①派生继承所有数据成员与函数(不论公有成员、保护成员、私有成员) ②派生虽然继承所有成员,但是能不能访问成员还与父成员属性(public、protected...、private)以及继承方式有关 ③静态成员:如果定义了一个静态成员,那么该静态成员在整个继承体系中都存在。...该静态成员只能定义一次,派生不能再次定义 一个改变了静态成员值,整个继承体系中值都将改变 #include using namespace::std; class A {...class B :public A { public: int b_data; B(int data) :A(data), b_data(data) {} void showB(){} }; 可以看到B公有继承于...A,B可以在内访问父A所有public、protected成员,但不能访问private成员 由于父protected成员在子类中也是protected,所以不能在外部直接使用 ?

52810

c++之类成员变量成员函数是分开存储

C++程序内存格局通常分为四个区: 全局数据区(data area),代码区(code area),栈区(stack area),堆区(heap area)(即自由存储区)。...全局数据区存放全局变量,静态数据和常量; 所有成员函数和非成员函数代码存放在代码区; 为运行函数而分配局部变量、函数参数、返回数据、返回地址等存放在栈区;余下空间都被称为堆区。...根据这个解释,我们可以得知在定义时,成员函数是被放在代码区,而静态成员变量定义时就已经在全局数据区分配了内存,因而它是属于。...对于非静态成员变量,我们是在实例化过程中(构造对象)才在栈区或者堆区为其分配内存,是为每个对象生成一个拷贝,所以它是属于对象

1.9K40

成员变量,变量,局部变量区别是什么_内部变量和局部变量

如果局部变量名字和成员变量名字相同, 要想在该方法中使用成员变量,必须使用关键字this class People { String name = "体重定义name"; //成员变量并赋值...成员变量变量区别 由static修饰变量称为静态变量,其实质上就是一个全局变量。...不同对象实例变量将被分配不同内存空间, 如果类中成员变量变量,那么所有对象这个变量都分配给相同一处内存,改变其中一个对象这个变量影响其他对象这个变量,也就是说对象共享变量。...静态变量随着加载而存在,随着消失而消失。 2、调用方式不同 成员变量只能被对象调用。 静态变量可以被对象调用,还可以被名调用。...成员变量和静态变量区别: 1、成员变量所属于对象。所以也称为实例变量。 静态变量所属于。所以也称为变量。 2、成员变量存在于堆内存中。

1.7K30

派生中虚函数和非虚函数继承效果

“强制实现”,也就是只要是父指针调用普通函数,那就是父普通函数 而虚函数作用,主要是为了让父指针可以调用子类函数,这种是在运行时才决定调用哪个函数 1、虚函数:   C++虚函数主要作用是...子类可以重写父虚函数实现子类特殊化。 2、纯虚函数:   C++中包含纯虚函数,被称为是“抽象”。抽象不能使用new出对象,只有实现了这个纯虚函数子类才能new出对象。   ...C++中纯虚函数更像是“只提供申明,没有实现”,是对子类约束,是“接口继承”。   C++中纯虚函数也是一种“运行时多态”。...3、普通函数:   普通函数是静态编译,没有运行时多态,只会根据指针或引用“字面值”对象,调用自己普通函数。   普通函数是父为子类提供“强制实现”。   ...因此,在继承关系中,子类不应该重写父普通函数,因为函数调用至于对象字面值有关。 参考链接

7210
领券