草庐IT

rb_protect

全部标签

java - 为什么 Java 中的 "protected"修饰符允许访问同一包中的其他类?

为什么在Java中,带有“protected”修饰符的成员不仅可以被同一个类和子类访问,而且可以被同一个包中的每个人访问?我想知道语言设计的原因,而不是实际应用程序(例如,测试) 最佳答案 此设计基于包是适当的单元,由一个内部一致的团队维护和发布的想法;继承关系与谁维护和何时发布什么关系不大。 关于java-为什么Java中的"protected"修饰符允许访问同一包中的其他类?,我们在StackOverflow上找到一个类似的问题: https://stac

Java protected 字段与公共(public) getter

什么是更好的做法和原因:通过protected字段或私有(private)字段上的公共(public)getter访问基类变量。(无论如何,getter都会公开) 最佳答案 如果无论如何都会有一个公共(public)setter/getter,你为什么要比绝对必要的更广泛地公开这个领域本身?这意味着它可以立即被子类写入(除非它是final开始的)。我个人喜欢我的所有字段都是私有(private)的:它在API和实现之间提供了更清晰的分离。我认为父类(superclass)和子类之间的关系类似于调用者和被调用者的关系——对底层实现的更

unit-testing - Kotlin 中的测试无法访问 protected 方法

我要考B类:classB:A{overridefuninit(){//doworkhere}}classA{protectedfuninit(){}//willbecalledbyinternallogic}在Java中调用没有问题:b.init()在测试方法中(测试类与测试对象在同一个包中),但是在Kotlin编译器报错:Cannotaccess'init':itisprotectedin'B'@Testfun`checksinit`(){valb=B()b.init()//assertworkdone}为什么它不起作用?如何解决这个问题(我想避免公开方法)?

kotlin - 扩展功能中无法访问 protected 成员?

Kotlin有几个visibilitymodifiers以及extensionfunctions.文档指出扩展是静态解析的。但这对于扩展函数中类成员的可见性意味着什么?让我们考虑以下人为的例子:classA{protectedvala="Foo"}funA.ext(){print(a)}//Raises:Cannotaccess'a':itis'protected'in'A'classB{valb="Bar"}funB.ext(){print(b)}//Compilessuccessful代码不会编译。扩展类时似乎无法访问protected成员。静态解析是否意味着扩展函数是在Java中

windows - Docker for Windows 错误 : "Hardware assisted virtualization and data execution protection must be enabled in the BIOS"

我已安装Docker,但在运行GUI时出现此错误:HardwareassistedvirtualizationanddataexecutionprotectionmustbeenabledintheBIOS似乎是一个错误,因为Docker在命令行中的工作方式就像一个魅力,但我想知道是否有人知道为什么会发生这种情况?在您问之前,是的,我已经在BIOS中启用了虚拟化,并且英特尔处理器识别实用程序确认它已被激活。Docker、docker-machine和docker-compose都在命令行下工作,Virtualbox工作,从Debian或UbuntuVM运行Docker工作。GUI有一个

c++ - 为什么没有std::protect?

为什么在C++11中没有std::protect和std::bind一起使用?Boost.Bind提供了一个boost::protect帮助器来包装其参数,以便boost::bind无法识别和评估它.std::[c]ref在大多数情况下是一个足够好的替代品,除了它不会将rvalue作为参数。举个具体的例子,考虑如下人工情况:#include#includeintadd(inta,intb){returna+b;}structinvoke_with_42{templateautooperator()(FunObj&&fun_obj)const->decltype((fun_obj(42)

c++ - protected 与私有(private)的析构函数

C++中protected析构函数和私有(private)析构函数有什么区别吗?如果基类析构函数是私有(private)的,我想在删除派生类对象时仍然会调用它。 最佳答案 如果基类析构函数是private或protected,那么你不能通过基类指针调用delete。使用protected析构函数来防止通过基类指针破坏派生对象。它将析构函数的访问限制为派生类。它可以防止自动(堆栈)类基的对象。Ineffectitisusedtoallowanyotherpolymorphicuseofderivedclassesviapointers

C++:为什么我的 DerivedClass 的构造函数无法访问 BaseClass 的 protected 字段?

我有一个构造函数试图初始化基类中的一个字段。编译器提示。该字段protected,因此派生类应该具有访问权限。//Thebaseclass:classBaseClass{public:BaseClass(std::string);BaseClass(constBaseClass&orig);virtual~BaseClass();conststd::stringGetData()const;voidSetData(conststd::string&data);protected:BaseClass();std::stringm_data;};BaseClass::BaseClass(c

c++ - 为什么 protected 构造函数会在此代码中引发错误?

关于protected构造函数的一个问题。我了解到protected构造函数可以在派生类中使用。但是,我发现下面的代码有错误。为什么会这样?classA{protected:A(){}};classB:publicA{public:B(){A*f=newA();//Whyitisnotworkinghere}}; 最佳答案 这与构造函数无关。这就是protected访问的工作原理。protected访问说明符的工作方式,它允许派生类B访问基类A的对象的内容仅当类A的对象是类B的子对象时。这意味着你在你的代码中唯一能做的就是访问A到B

c++ - protected 和私有(private)有什么区别?

这个问题在这里已经有了答案:WhatisthedifferencebetweenprivateandprotectedmembersofC++classes?(19个回答)关闭1年前。我不明白protected和私有(private)成员或方法之间的区别,因为我认为两者都会隐藏要从类外部访问的成员或函数。protected关键字和私有(private)关键字有什么区别? 最佳答案 private-只能在定义它们的类中访问。protected-在定义它们的类和从该类继承的其他类中可访问。