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

为什么当我继承了“母亲”类时,当访问说明符被设置为私有时,我不能在“孙女”类中创建“母亲”类对象?

当访问说明符被设置为私有时,意味着只有在同一个类中才能访问该成员。在继承关系中,子类可以继承父类的公有和保护成员,但无法直接访问父类的私有成员。

在这个问题中,当访问说明符被设置为私有时,意味着“母亲”类的私有成员只能在“母亲”类内部访问,无法在其他类中直接访问。因此,在“孙女”类中无法创建“母亲”类对象,因为无法访问“母亲”类的私有成员。

这是面向对象编程中的封装性原则的体现。私有成员被设计为只能在类内部使用,以保护数据的安全性和完整性,同时隐藏实现细节。如果需要在子类中使用父类的私有成员,可以通过父类提供的公有或受保护的接口来间接访问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

线程的故事:的3位母亲成就优秀的

当身边的同龄人还在沉浸于夕阳下的奔跑已经开始思考为什么太阳会东升西落?而我们人类又为什么会生存在地球上?于此可见一斑。 当时的在所有人眼里就是一个“怪人”,村里面的阿猫、阿狗走路都要躲着。...Thread的缺点 Java 语言的设计是单继承,所以继承 Thread 之后,就不能再继承其他。...然而我的第二个家庭和村里的首富一家是至交,得知的志向之后,他们一家愿意倾囊相授,举一家之力帮我去大洋彼岸追寻的梦想。于是在感激之余,的第二位母亲当场认下首富一家的干爹、干妈。...而我的故事也在这里结束最终不负三位母亲所望,虽不能拯救宇宙和维护世界和平,但却也能在程序界作出自己的一些贡献,这就是和我三位母亲的故事。...总结 本文使用第一人称“”(Thread)的视角讲了线程创建的三种方式,第一种是继承 Thread,但因为 Java 语言不允许多继承,所以继承 Thread 之后就不能继承其他,于是就有第二种方式实现

33420

Python 面向对象 OOP-三大特性#学习猿地

定义:在成员名称前面加两个下划线 __成员名称 特征:私有的成员只能在当前的内部去访问和操作,不能在的外部进行操作 ``` #### 查看对象的成员 ```python # 查看对象的所以成员 print...### 计算机继承 > 在面向对象,一个继承,那么这个就拥有的所有成员(除了私有成员) ### 概念: + 其它继承,这个称为 父 也叫做 基 或者 超 + 继承其它...子类(父): pass ``` ### 继承的特征 + 在指定继承的父,所有继承自object(系统提供) 了解 + 子类继承后,就拥有的所有成员包括魔术方法(除了私有成员...+ 子类如果定义不存在的方法,称为对父的扩展 + 一个父可以多个子类继承,还可以存在 链式继承 。...A B C D # D继承B和C,然后B和C又分别继承A,这种继承关系称为 菱形继承 ``` 问题:在这种菱形继承关系的关系,及super()调用时的顺序

36420

【笔记】《C++Primer》—— 第15章:面向对象程序设计

派生列表就是在名后面加一个单冒号和一个访问说明符,其中访问说明符有public,protected,private三种,如果写则默认是private 派生继承的成员数据和成员函数,其中对这些继承来的成员的访问权限由成员本身的说明符和派生列表里的访问说明符一同决定...15.4 抽象基 我们有时候希望某个基只用来继承而不允许实例化,这时候我们可以给这个基加入纯虚函数,拥有纯虚函数的基叫抽象基,不能直接创建 纯虚函数的定义方法是在声明函数名的时候函数体类似显式默认构造的写法改写...某个对其继承来的成员的访问权限受到两个因素的影响: 基此成员的访问说明符,这是最重要的一部分,private的成员不管怎么样都无法其他使用,其他级别受到下一项的影响 派生的派生列表的访问说明符...protected,则public级别的成员会降级到protected,也就是压低最高权限 private继承也同理,也就是全部级别都变成private 派生列表没有写明访问说明符,默认说明符符有关...,最好使用间接存储也就是存放基指针(智能指针就更好了),这是因为之前说到的截断特性导致的 我们常常定义额外的容器来保存的指针们 有时我们需要写好几个虚函数来处理容器的多态问题 当我继承一个

51020

Python 面向对象 OOP-三大特性#学习猿地

定义:在成员名称前面加两个下划线 __成员名称 特征:私有的成员只能在当前的内部去访问和操作,不能在的外部进行操作 ``` #### 查看对象的成员 ```python # 查看对象的所以成员 print...### 计算机继承 > 在面向对象,一个继承,那么这个就拥有的所有成员(除了私有成员) ### 概念: + 其它继承,这个称为 父 也叫做 基 或者 超 + 继承其它...子类(父): pass ``` ### 继承的特征 + 在指定继承的父,所有继承自object(系统提供) 了解 + 子类继承后,就拥有的所有成员包括魔术方法(除了私有成员...+ 子类如果定义不存在的方法,称为对父的扩展 + 一个父可以多个子类继承,还可以存在 链式继承 。  ...    A   B  C     D # D继承B和C,然后B和C又分别继承A,这种继承关系称为 菱形继承 ``` 问题:在这种菱形继承关系的关系,及super()调用时的顺序

35310

聊聊java的多继承,解决Java8接口default方法多继承冲突问题【享学Java】

本文的目的,主要从两个方面来思考Java单继承的这个问题: 为什么Java设计只能单继承? 怎样曲线实现多继承的效果? Java为何设计只能单继承?...因此,即使继承(实现)的多个接口中出现同名的方法名,实现也有且只会有一个实现。所以并不会出现结构混乱的情况。 为何接口可以多继承extends接口?...,变得比父亲更加强壮;同时也继承母亲,只不过温柔指数下降了,举的这个例子是不是也非常符合现实啊,哈哈。...此方案用到了一个基础知识点:内部类可以继承一个与外部类无关的,保证内部类的独立性,从而达到高内聚的编码规范 说明:其实有多种方式都能实现类似的效果,本文介绍的是认为是使用更接近多继承思维来解决问题...归纳总结:解决接口default方法冲突的三步骤: 方法签名相同时,才表示出现冲突。 的方法优先级最高。或者父的方法实现优先级大于任何接口的默认方法 其实,子接口的默认方法优先级更高。

2.3K20

Python入门进阶教程-面向对象

的私有属性 __private_attrs:两个下划线开头,声明该属性私有,不能在的外部使用或直接访问。在内部的方法中使用时 self.__private_attrs。...的私有方法 __private_method:两个下划线开头,声明该方法私有方法,只能在的内部调用 ,不能在的外部调用。在内部调用self.__private_methods。...init() 函数是系统创建实例后初始化的函数。这个函数名称是强制指定的,初始化函数必须使用这个名称;注意 init 两端各有两个下划线 _。...再比如,定义一个实例Mother母亲,定义一个实例Father父亲,则新的实例Kids孩子不但可以继承Mother还可以继承Father。 以上两个例子分别是单继承和多继承。...方法重写 在我们定义的老师实例,老师有上课、学习两个方法,但是英语老师上英语课,数学老师上数学课,不同实例的老师有不同的方法实现,这个时候,我们在创建不同老师实例的过程需要对方法进行重写。

40010

小白&JAP君|面向对象的三大特征你真的了解了吗?

比如我有两个:Animal和Dog,狗是属于Animal的,继承于Animal,就直接: public class Dog extends Animal 这样就实现继承。...当我们实现继承之后,我们就可以在Dog里面实现Animal的方法和属性,你可以自己去操作一下。 JAP君停一下,这个public是什么东西?这是固定的吗? 直接给你看一张图吧 ?...从上表可以看出private的权限最小,如果我们写了一个属性并且用private修饰,那么这个属性只能在这个中使用了,同理我们可以看出public的权限是最大的,任何地方我们都能够访问到。...当然有,①例如在JAVA,只能存在单继承(一个子类只能继承一个父),但是在c++里面,可以存在多继承(一个子类继承多个父),多继承当然是不好的,很容易导致关系的混乱,就好比你有很多的母亲,这样肯定是很乱的...其实就是不让别人直接访问这个的属性或者方法,而是通过一个方法来访问! 对的,自己多动手写一些。我们接下来说一下多态吧。先给大家一张从网上找的图片。 ?

37130

【JS原理】代码版认干爹 - 继承

,还是支支吾吾地 嗯...想应该是.....母亲生了 儿子(new),母亲 是 构造函数,父亲是原型,儿子能拥有父亲所有的财产(属性和方法) 其实继承,在我看来更像是 重新认个有钱有势的爹,因为要用你的属性和方法...原型上 存放对象,都会有这个问题 因为原型链继承 涉及到 原型,所以这也是他的缺点了 属性冗余 只想要 Person 原型的属性和方法,但是无形还拿到了 Person 原型实例 person1...) 会怎么样 其实一开始也不知道,其实 Object.create 传入 一个对象 a,会返回一个对象 b 你可以看到 对象a 成了 对象 b 的原型 所以 Object.create 可以说成是 ...__proto__ 而后有个想法,为什么要增加访问深度,这样不是会更慢吗?可不可以这样 Student.prototype=Person.prototype 哎呀,去,可以呀,这样不是完美了??...衷心在以后的面试,别人问继承的时候 可以从容迫地告诉他,幼稚问题,下一个 面试官:好的,本次面试结束,下一个 啊,说的是,下一个问题啊喂....

67140

《C++Primer》第十五章 面向对象程序设计

当我们用一个派生对象一个基对象初始化或赋值,只有该派生对象的基部分会被拷贝、移动或赋值,它的派生部分将会被忽略掉。...公有、私有和受保护继承 某个继承而来的成员呢的访问权限收到两个因素影响:一个是基该成员的访问说明符,第二个是在派生的派生列表访问说明符。...派生定义拷贝或移动操作,该操作负责拷贝或移动包括基部分成员在内的整个对象。...执行基的构造函数,该对象的派生部分是未被初始化的状态;执行基的析构函数,派生部分已经销毁了。...默认、拷贝和移动构造函数不会被继承,这些构造函数会按照正常规则合成,因此如果一个只含有继承的构造函数,则它也将拥有一个合成的默认构造函数 容器与继承 当我们使用容器存放继承体系对象,必须采用间接存储的方式

1.2K20

只用调用方法就好了,不用关注该如何设置数据成员 到此为止,书中提到了两种访问权限,public和private: public: 后定义的成员可以在整个程序内访问 private: 后定义的成员只能在的成员函数中被访问...每个访问说明符指定接下来的成员的访问级别,其有效范围直到出现下一个访问说明符或者达到的结尾为止 使用class或者struct关键字定义的唯一区别是默认的访问控制符,class默认是private...因为编译器在创建对象的时候必须知道对象占多少存储空间 如果一个指定友元,那么这个友元的成员函数可以访问此类包括非公有成员在内的所有成员 友元关系不具备传递性,每个单独控制自己的友元或者友元函数...在c++ ,内层作用域中的同名成员会覆盖外层,函数内部或者内部定义与全局作用域相同的变量,要使用全局作用域中的变量可以使用:: 构造函数相关 在构造函数初始化列表相当于先定义再赋值,而要做到对成员变量定义的同时初始化...它们包含this指针,静态函数成员不能声明成const类型,也不能在静态函数成员调用非类的静态成员 不能在的内部初始化的静态成员,static关键字只能出现在内部声明语句中,定义的时候不能加

59010

100道最新Java面试题,常见面试题及答案汇总

大家好,又见面是你们的朋友全栈君。 除了掌握扎实的专业技能之外,你还需要一份《Java程序员面试宝典》才能在万千面试者杀出重围,成功拿下offer。...答案:Java访问说明符是放在名之前,用于定义访问范围的关键字,常见的访问说明符有以下几类: Public:公共,能项目中的任何一个Class、Method、Field访问。...在下面的示例,str是值“Value One”的字符串对象: 分配一个新值,将创建一个新的String对象,并将引用移动到新对象。: Q33:数组和向量之间有什么区别?...Q51:如何限制一个不被继承? 答案:使用关键字Final。 在下面的例子,Stone就不能继承。 Q52:访问说明符访问范围是什么? 答案: Q53:栈和队列之间有什么区别?...Q90:什么是匿名? 答案:匿名是不能有名字的,它们不能引用,只能在创建用New语句来声明它们。 下例,我们定义一个匿名: Q91:数组声明之后是否还可以改变其大小?

5K21

【愚公系列】2021年12月 Python教学课程 22-面向对象编程-封装、继承、多态

在程序继承描述的是事物之间的所属关系,例如猫和狗都属于动物,程序便可以描述猫和狗继承自动物;同理,波斯猫和巴厘猫都继承自猫,而沙皮狗和斑点狗都继承自狗,如下所示: 在 OOP 程序设计,...当我们定义一个新的时候,新的称为子类(Subclass),而继承称为基、父或超(Base class、Super class)。....): class DerivedClassName(modname.BaseClassName): ## 定义在另外的模块 Python 支持多父继承机制,所以需要注意圆括号的顺序,...创建 Bosi 对象 bs ,就默认执行了父(Cat)的__init__方法 父的属性、方法,会被继承给子类 另一个例子: 总结: 私有的属性,不能通过对象直接访问,但是可以通过方法来访问...动态语言调用实例方法不检查类型,只要方法存在,参数正确,就可以调用。这就是动态语言的“鸭子类型”,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以看做是鸭子。

20420

我妈今年 70 岁,受不了Windows蓝屏,用了 21 年的 Linux!YYDS!

尽管如次,如今当我问起她是否还记得当初使用 Windows 的感受,她嘴里就开始骂骂咧咧,将 Windows 称为 “垃圾的垃圾” 。...她们不再使用 Windows,选择 Linux 作为日常使用时,就不再给她们提供支持,她们完全可以使用自己所选择的 Linux 发行版的桌面环境完成所有的日常工作 。...比如他们购买或开发了一些愚蠢的软件,这些软件只能运行在 Windows 。 Linux 的另一个软肋是游戏。并不是说 Linux 不能玩游戏,而是很少有游戏是专门 Linux 制作的。...当年例外,从 Windows 切换到 Linux 和 BSD ,买了好几本书,做实验,收集信息,最终才适应 Linux。...Java 创建对象的 6 种方式 阿里为什么推荐使用 LongAdder? AnotherRedisDesktopManager 开始收费了? 别再写爆爆爆炸,试试装饰器模式!

1.1K50

教师妹学python之七:面向对象编程

注意: Python名称是按照惯例用大写字母表示法编写的。 所有Dog对象必须具有的属性在.__init__()方法定义。每次创建新Dog对象,....比较a、b使用==运算符,结果False。即使a和b都是Dog的实例,它们也代表内存的两个不同的对象。...Dog的.__init__()方法有三个参数,那么为什么只传递给它的两个参数呢? 实例化Dog对象,Python会创建一个新实例并将其传递给的第一个参数.__init__()。...你可能是从母亲那里继承头发的颜色,这是你与生俱来的属性。假设你决定将头发染成紫色。假设你的母亲没有紫色头发,那么你刚刚覆盖了从母亲那里继承的头发颜色属性。...,sound将其设置"Arf"。

47220

1,机器学习简介

监督学习有两种,预测的结果是离散值属于分类(classification)问题,预测的结果是连续值属于回归(regression)问题。...第三强化学习(reinforcement learning),是学习系统从环境到行为映射的学习,以使奖励信号(强化信号)函数值最大。常用于智能控制机器人和决策问题。 ?...一个女孩的母亲要给这个女孩介绍男朋友,于是有下面的对话: 女儿:多大年纪母亲:26。 女儿:长的帅不帅? 母亲:挺帅的。 女儿:收入高母亲:不算很高,中等情况。...女儿:是公务员母亲:是,在税务局上班呢。 女儿:那好,去见见。 ? 三,支持向量机 支持向量机SVM(support vector machine)的基本思想是寻找最大间隔的分割超平面。...在普通的RNN,较久远的相关信息容易遗忘。为了解决对长期信息的依赖问题,LSTM(Long Short Term 长短记忆模型)应运而生。

39420

Julia机器学习核心编程.3

例如: • X已知,可以计算Y。 • Y已知,可以计算X。 这里给出一个定义关系的例子:兄弟—父亲—母亲—男性。...Y的母亲 这里定义5种关系,它们都是r(参数)的形式。...函数是函数式编程范式的第一对象。函数可以视为一种数据,假设函数将返回一个值,这允许我们将函数作为参数传递给另一个函数,或者从其他函数返回一个函数。...比如创建一个函数,将输入数据映射到在命令式编程范式执行n条语句可能获得的结果。 Stat指一个声明,Stat_0, Stat_1, Stat_2, …,Stat_n是n+1个声明。...(2)抽象:这是一种使用在接口和功能方面定义概念边界的方法,可以保护对象的内部属性。 (3)继承:允许从现有继承属性和行为,从而无须重写它们,这也有助于保持一致性。

39120

Python 继承

应用场景 的方法实现不能满足子类需求,可以对方法进行 重写(override) ?...父方法 来调用父方法的执行 代码其他的位置针对子类的需求,编写 子类特有的代码实现 关于 super 在 Python super 是一个 特殊的 super() 就是使用 super 创建出来的对象...示例 B 的对象不能直接访问 __num2 属性 B 的对象能在 demo 方法内访问 __num2 属性 B 的对象可以在 demo 方法内,调用父的 test 方法 父的 test 方法内部...pass 2.1 多继承的使用注意事项 问题的提出 如果 不同的父 存在 同名的方法,子类对象 在调用方法,会调用 哪一个父的方法呢? 提示:开发,应该尽量避免这种容易产生混淆的情况!...,推荐使用 经典:不以 object 推荐使用 在 Python 3.x 定义,如果没有指定父,会 默认使用 object 作为该类的 基 —— Python 3.

66850

【笔记】《C++Primer》—— 第三部分:设计者的工具

final,表示不允许继续覆盖 有时候希望某个基只用来继承而不允许实例化,这时候我们可以给这个基加入纯虚函数,拥有纯虚函数的基叫抽象基,不能直接创建。...定义方法是在声明函数名的时候函数体类似显式默认构造的写法改写=0,只能对虚函数使用这个写法 友元只对声明的有效,友元的基或派生都不是友元 某个对其继承来的成员的访问权限受到两个因素的影响:...基此成员的访问说明符,这是最重要的一部分 派生的派生列表的访问说明符,这一项决定的是派生继承来的成员对外表现出的最高权限 有时候我们需要改变外部对派生继承的某个名字的访问级别,可以在自己的访问控制符处用...using声明需要改变的名称(用::作用域符特指名称) 派生对基的转换也与派生列表的访问说明符有关,本质上与类型转换函数的权限有关 名称查找是根据编译的目标的静态类型从内到外进行查找的,目标的静态类型决定其是否可见...,这些实参不会被继承,而是派生会得到多个继承的构造函数,每个构造函数省略一个有默认实参的形参 当我们想要把继承体系的对象存放到容器,最好使用间接存储也就是存放基指针(智能指针就更好了) 16

1.7K10

【JAVA冷知识】JAVA真的不支持多继承吗?让我们用内部类去实现JAVA的多继承

——烽火戏诸侯 《剑来》 ---- 众多周知,对于面向对象语言来讲,JAVA是不支持多继承的,只支持单继承,但是提供接口来补偿。...如果实现java的多继承,其实很简单,关键是对于内部类的特征的掌握,内部类可以继承一个与外部类无关的,保证内部类天然独立性,根据这个特性从而实现一个可以继承多个的效果 下面我们看一个Demo,...缺点: 首先通过继承的方式实现,打破了的封装性,子类依赖于其超特定功能的实现细节。...JDK源码的运用 关于通过内部类来实现java多继承的JDK场景,我们简单分析一下 asList List integers = Arrays.asList(1, 2, 3); 这个代码小伙伴们一定陌生...,其他都不能访问,正常的ArrayListadd方法是ArrayList父提供,Arrays的内部类ArrayList没有覆写add方法。

61220

【笔记】《C++Primer》—— 第18章:用于大型程序的工具

这一章介绍写大型程序可能用到的工具,读起来也困难,内容也不算多。...=true且不包含任何throw语句才会返回true noexcept说明符所关联的函数指针都必须有一样的说明,如果一个虚函数承诺它不跑出异常,则后续派生的所有对象也不能抛,反之如果虚函数可以抛,派生倒是可以承诺抛出...,如果我们直接调用函数传递派生对象进去,会产生二义性错误,需要用特质来解决 和单继承一样,静态类型决定我们能调用那些成员 在多继承的时候,名称查找会在所有直接基同时进行,单个继承链上才有顺序,...这个矛盾难以解决,只能通过调整任意安排让一个人负责一个的编写并安排好继承层次来避免 在每个共享的虚基只会有一个共享的子对象,所以我们可以直接访问这个对象不会产生二义性。...但是如果两个直接基继承虚基的同一个对象,任何派生继承这两个基,那么调用这个对象时会产生歧义因为这个对象两个重新继承,最好的解决方法仍然是在派生继承一次对象指明好对象的来源 在虚派生

95520
领券