精华内容
下载资源
问答
  • 2021-05-06 19:41:37

    在c++中,protected修饰的成员属性和成员函数的访问权限:

    (1)、本类中的成员函数(public/private/protected修饰的函数)

    (2)、友元函数和友元类

    (3)、派生类中的成员函数可以访问对应基类中的protected成员属性和成员函数。

    #include <iostream>
    #include <string>
    
    class Base {
    public:
        Base() : m_data(0) {}
    
    protected:
        int m_data;
        
    private:
        void foo();
    };
    
    class Derived : public Base {
    public:
        Derived() = default;
    
    private:
        void print() {
            this->m_data = 2;
        }
    
    protected:
        void foo() {
            this->m_data = 2222;
        }
    };
    
    
    int main () {
        Base *b = new Derived();
        b->m_data = 3;  // 编译器报错,只能在类的成员函数中访问
    
      return 0;
    }

     

    更多相关内容
  • 详解Java的protected访问权限

    千次阅读 2022-02-10 17:44:22
    protected修饰静态方法和实例方法的差异

    protected 访问权限是这么定义的:protected 修饰的类和属性,对于本类、本包及其子类可见。

    其实,protected受访问保护规则是很微妙的。

    但可以概括为:

    1、protected的方法在自己的包中与public相同,可容易访问。

    对于实例方法来说:

    2、对于不同包的父类与子类,只能通过自身实例(自身的引用)访问自身继承的实例方法,而不能通过父类实例(引用)访问父类的实例方法。

    3、对于同父类的亲兄弟类,子类只能在自己的作用范围内,访问自己继承的那个父类的protected实例方法域,而无法到访问其他子类(同父类的亲兄弟类)所继承的protected实例方法域。

    对于静态方法来说:

    4、只要有继承关系(父类 或 同父类的亲兄弟类),都可以相互访问protected静态方法域。

    下面将分别对易混的第二、三、四点进行阐述:

    第二点(实例方法、不同包的父类与子类):

    package A;
    
    public class test{
        protected void SOUT(){
            System.out.println(100);
        }
    }
    
    
    package B;
    import A.*;
    
    public class test2_1 extends test{
        public static void main(String[] args) {
            test aa = new test();
            test2_1 bb = new test2_1();
            aa.SOUT();  //编译不通过,不能通过父类实例(引用)访问父类的实例方法。
            bb.SOUT();  //编译通过
        }
    }

    第三点:

    package A;
    
    public class test{
        protected void SOUT(){
            System.out.println(100);
        }
    }
    
    package B;
    import A.*;
    
    public class test2_1 extends test{
        public static void main(String[] args) {
            test2_2 aa = new test2_2();
            aa.SOUT();		// 编译错误,因为这里的aa访问的是test2_2类的SOUT方法域,不行。
    //但下列代码可以,因为访问的是自己的SOUT方法域。
    		test2_1 bb = new test2_1();
    		bb.SOUT();
        }
    }
    
    class test2_2 extends test{
        public static void k(){
    		test2_2 aa = new test2_2();
            aa.SOUT();		// 在这里访问就可以,因为访问的是本类的SOUT方法域。
        }
    }
    

    第四点:

    package A;
    
    public class test{
        protected static void SOUT(){
            System.out.println(100);
        }
    }
    
    package B;
    import A.*;
    
    public class test2_1 extends test{
        public static void main(String[] args) {
            test aa = new test();
            aa.SOUT();
            test2_1 bb = new test2_1();
            bb.SOUT();
            test2_2 cc = new test2_2();
            cc.SOUT();
            //均编译通过,因为protected修饰的是静态方法,
            //可以任意访问 父类 或 同父类的亲兄弟类 的SOUT方法
        }
    }
    
    class test2_2 extends test{
    
    }
    

    正因如此,我们无法在我们的类中直接调用 anObject.clone(); 。

    展开全文
  • 关于protected访问范围

    千次阅读 2020-08-01 09:46:07
    2.不同包类,子类继承了父类的当前类中,可以访问父类的protected变量 3.但是子类包的其他类不能通过子类或者父类访问到父类的protected变量。 这里其实就可以推出一个结论就是,父类protected修饰的变量...

    1.同包中当前类、其他类都能访问

     

    2.不同包类,子类继承了父类的当前类中,可以访问父类的protected变量

    3.但是子类包的其他类不能通过子类或者父类访问到父类的protected变量。

    这里其实就可以推出一个结论就是,父类protected修饰的变量在不同包中约等于private,因为它还是可以被子类所在的当前类访问得到。

    展开全文
  • java中protected权限

    2019-04-17 01:46:03
    NULL 博文链接:https://837062099.iteye.com/blog/1609340
  • 第一: private,public,protected访问范围: private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问. protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该...

    第一: private,public,protected的访问范围:

    private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问.
    protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问
    public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问
    注:友元函数包括两种:设为友元的全局函数,设为友元类中的成员函数

    第二:类的继承后方法属性变化:

    使用private继承,父类的所有方法在子类中变为private;
    使用protected继承,父类的protected和public方法在子类中变为protected,private方法不变;
    使用public继承,父类中的方法属性不发生改变;

    三种访问权限

    public:可以被任意实体访问

    protected:只允许子类及本类的成员函数访问

    private:只允许本类的成员函数访问

    三种继承方式

    public 继承

    protect 继承

    private 继承

    组合结果

    基类中 继承方式 子类中

    public & public继承 => public

    public & protected继承 => protected

    public & private继承 = > private

    protected & public继承 => protected

    protected & protected继承 => protected

    protected & private继承 = > private

    private & public继承 => 子类无权访问

    private & protected继承 => 子类无权访问

    private & private继承 = > 子类无权访问

    由以上组合结果可以看出,protected继承和private继承能降低访问权限:

    1、public继承不改变基类成员的访问权限

    2、private继承使得基类所有成员在子类中的访问权限变为private

    3、protected继承将基类中public成员变为子类的protected成员,其它成员的访问 权限不变。

    4、基类中的private成员不受继承方式的影响,子类永远无权访问。

    此外,在使用private继承时,还存在另外一种机制:准许访问 。

    我们已经知道,在基类以private方式被继承时,其public和protected成员在子类中变为private成员。然而某些情况下,需要在子类中将一个或多个继承的成员恢复其在基类中的访问权限。

    C++支持以两种方式实现该目的

    方法一,使用using 语句,这是C++标准建议使用的方式

    方法二,使用访问声明,形式为 base-class::member;, 位置在子类中适当的访问声明处。(注,只能恢复原有访问权限,而不能提高或降低访问权限)

    展开全文
  • 2. protected类对自身、同一个包的类、以及自己的子类访问; 3. private 只给类自身访问; 4. default(friendly)类自身以及同一个包的类可以访问。如果不特意说明访问控制权限,则默认default。 举例说明: ...
  • Java规定的4种权限(从小到大排列):private、缺省、protected 、public,在java中封装性的体现,需要权限修饰符来配合。 private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类) default,...
  • 这里的default 与 显示出现的 default 关键字(下面) 不是一个意思。 ... ... public class DemoA { private String S1="a";//private修饰的成员变量 String S2="b";... protected String S3="c";//protecte
  • 以上这篇浅谈php中的访问修饰符private、protected、public的作用范围就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:php中访问修饰符的知识点总结PHP...
  • protected访问范围

    2020-12-30 22:15:39
    类内部 同一个包 不同包的子类
  • Java访问权限protected详解

    千次阅读 2020-07-15 21:58:36
    在Java中,类成员访问权限修饰词有四类:private,无(包访问权限),protected 和 public,而其中只有包访问权限和public才能修饰一个类(内部类除外)。由于很多Java书籍对protected可见性的介绍都比较笼统,本文...
  • 在众多文档中,对Protected的用法都用一...只有当前类的成员和继承该类的成员才能访问 但是下列例子 class FatherClass { public int a = 10; protected int b = 20; } class ChildClass:FatherClass { int...
  • 1.C#五个修饰符的权限 修饰符 级别 适用成员 解释 public 公开 类及类成员的修饰符 对访问成员...protected 受保护的 类成员的修饰符 在类的内部或者在派生类中访问,不管该类和派生类是不是在同一程序集中 i
  • 2 不同包中,子类不可以通过父类的实例对象访问protected修饰的方法和变量,子类可以通过子类的实例对象访问protected修饰权限的方法和变量 3 不同包中,子类不可以通过子类的实例访问父类default修饰的方法和变量 ...
  • 有关protected修饰符的访问权限

    千次阅读 2021-09-23 19:52:23
    如果希望超类中的方法和属性能够被子类访问那么可以使用protected修饰符,但需要谨慎使用protected属性,它违背了数据封装原则(子类能访问父类的protected域),而protected修饰的方法是更具有实际意义的,比如Object...
  • php三种权限的详解

    2021-05-03 05:54:39
    PHP类中有三种访问修饰符public、protected、private.../*** public、protected、private修饰符权限* car类*/class Car{public $carName = 'BZ';protected $color = 'white';private $price = '100万';public funct...
  • C++中protected访问权限问题

    万次阅读 多人点赞 2018-07-19 17:17:10
    2. 派生类的成员只能通过派生类对象访问基类的保护成员,派生类对一个基类对象中的受保护成员没有访问权限。 这两句话看的太头晕了,其实作者应该是想表达:只有在派生类中才可以通过派生类对象访问基类的protected...
  • java四种访问权限修饰词
  • java protected 权限详解

    2020-08-31 15:23:39
    可在同一个包里的子类中实例化NewObject类获得对象,然后可用该对象访问protected修饰的方法或者属性,即.操作访问。 可在同一个包里的非子类中实例化NewObject类获得对象,然后可用该对象访问protected修饰的...
  • Java 访问权限控制:你真的了解 protected 关键字吗?

    万次阅读 多人点赞 2017-03-12 22:54:47
    在Java中,类成员访问权限修饰词有四类:private,无(包访问权限),protected 和 public,而其中只有包访问权限和public才能修饰一个类(内部类除外)。特别地,很多Java书籍对protected可见性的介绍都比较笼统,...
  • 注释:左图为各种权限范围(范围由大到小),右图标明两种修饰符的组合对应的访问权限 总结 只有当类访问权限为public,类方法和属性也为public时,方法和属性才可以适用于所有类(A) 当类方法和属性为private,...
  • 2、访问权限修饰符:private、public、protected; 3、private、public、protected 都是Java关键字,用于修饰 成员变量 或 方法 ; Java访问权限之 private (私有的): 1、用 private 关键字...
  • 所谓访问权限,指的就是...Java中有四种访问权限,分别是public、protected、包访问权限(默认)、private,如果省略了访问修饰符,那默认访问权限为包访问权限。 这四种权限从最大权限到最小权限分别是: public >...
  • 在Java中提供了四种访问权限, 使用不同的访问权限修饰符修饰时, 被修饰的内容会有不同的访问权限, public: 公共的。 protected: 受保护的 default: 默认的 private: 私有的 权限 使用规范 public权限...
  • C++中protected访问权限 http://blog.csdn.net/luoruiyi2008/article/details/7179788 关于C++中protected访问权限的讨论已经是一个很陈旧的话题了,陈旧到大家都不愿意去讨论,觉得他见到到吃饭睡觉...
  • 四个访问修饰符的权限范围大小 访问修饰符 父类本身 同包 子类 其它包 public √ √ √ √ protected √ √ √ default √ √ private √ default(默认):表示包访问权限,同一个包内的任何...
  • 访问权限:private、默认、protected、public关键字的区别和作用范围 private关键字:只在本类中可以使用 默认:在本类和本包中可以使用 protected关键字:在本类、本包和不同包的子类中可以使用 public关键字:在...
  • java中protected和默认两种权限访问修饰符的区别
  • private : 私有成员, 在类的内部才可以访问protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。
  • 1、他们之间的优先级 public>protected>默认类型(default)>private 2、他们之间的区别 ...default:即不加任何访问修饰符,通常称为“默认访问权限“或者“包访问权限”。该模式下,只...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,565
精华内容 17,026
关键字:

protected访问权限范围