精华内容
下载资源
问答
  • java私有属性和私有方法 您是Java程序员,所以您知道我在说什么。 public修饰符使方法或字段可从应用程序中的任何位置访问。 那是简单的部分。 但是,您能告诉我protected和包私有的区别吗? (提示:如果您未在...

    java私有属性和私有方法

    您是Java程序员,所以您知道我在说什么。 public修饰符使方法或字段可从应用程序中的任何位置访问。 那是简单的部分。 但是,您能告诉我protected和包私有的区别吗? (提示:如果您未在方法或字段前面编写任何访问修饰符,则package private是对方法或字段的保护。请注意!我说谎!)我的采访经验是很多人不知道。 对于Java开发人员,我认为这是不可行的吗? 并不是的。 即使您不知道,您仍然可能是一名优秀的Java开发人员。 也许现在您将在某个地方查找它。 也许Java规范是一个很好的入门文档。

    我会告诉你一些更有趣的事情。

    从字面上看,没有一个候选人知道什么是private 。 而您,阅读本文,也不知道。

    好的,这很挑衅。 您可能是少数几个碰巧用这种无用信息填充大脑的人之一,甚至您可能已经阅读了Java规范。

    大多数Java程序员认为私有方法和字段只能从类内部访问。 有些人甚至认为只能从对象实例内部进行。 他们相信:

    public class PrivateAccessOtherObject {
        public PrivateAccessOtherObject(int i) {
            this.i = i;
        }
        private int i;
        void copyiTo(PrivateAccessOtherObject other){
            other.i = i;
        }
    }

    不可能。 (它是。)

    那么什么是私人的?

    最近的JLS指出, 只能在包含成员或构造函数声明的顶级类(第7.6节)的正文中访问私有类成员或构造函数。

    Java规范中的示例并不是最好的描述规则。 也许那只是一个简单的例子。 像这样的东西可能更好地解释了这个概念:

    public class PrivateFieldsContainingClass {
        private static class NestedClass {
            private int i;
        }
        private NestedClass nestedClassInstance = new NestedClass();
        void set(int i) {
            nestedClassInstance.i = i;
        }
        int get() {
            return nestedClassInstance.i;
        }
    }

    可以从封闭类以及NestedClass内部访问字段i 。 这个例子也很简单,但更使规范例子错过了。 这种可能性有什么实际用途? 并不是的。

    额外的问题:为什么我说我在说谎?

    翻译自: https://www.javacodegeeks.com/2014/08/java-private-protected-public-and-default.html

    java私有属性和私有方法

    展开全文
  • 但是,您能告诉我protected包和私有包的区别吗? (提示:如果您未在方法或字段的前面编写任何访问修饰符,则package private是对方法或字段的保护。请注意!我说谎!)我的采访经验是很多人不知道。 对于Java开发...

    您是Java程序员,所以您知道我在说什么。 public修饰符使方法或字段可从应用程序中的任何位置访问。 那是简单的部分。 但是,您能告诉我protected包和私有包的区别吗? (提示:当您不在方法或字段前面编写任何访问修饰符时,package private是对方法或字段的保护。请注意!我说谎!)我的采访经历是很多人不知道的。 对于Java开发人员,我是否认为这是不可行的? 并不是的。 即使您不知道,您仍然可能是一名优秀的Java开发人员。 也许现在您将在某个地方查找它。 也许Java规范是一个很好的入门文档。

    我会告诉你一些更有趣的事情。

    从字面上看,没有候选人知道什么是private 。 而您,阅读本文,也不知道。

    好的,这很挑衅。 您可能是少数几个碰巧用这种无用信息填充大脑的人之一,甚至您可能已经阅读了Java规范。

    大多数Java程序员认为私有方法和字段只能从类内部访问。 有些人甚至认为仅来自对象实例内部。 他们相信:

    public class PrivateAccessOtherObject {
        public PrivateAccessOtherObject(int i) {
            this.i = i;
        }
        private int i;
        void copyiTo(PrivateAccessOtherObject other){
            other.i = i;
        }
    }

    不可能。 (它是。)

    那么什么是私人的?

    最新的JLS说, 私有类成员或构造函数只能在包含成员或构造函数声明的顶级类(第7.6节)的正文中访问。

    Java规范中的示例并不是最好的描述规则。 也许那只是一个简单的例子。 像这样的东西可能更好地解释了这个概念:

    public class PrivateFieldsContainingClass {
        private static class NestedClass {
            private int i;
        }
        private NestedClass nestedClassInstance = new NestedClass();
        void set(int i) {
            nestedClassInstance.i = i;
        }
        int get() {
            return nestedClassInstance.i;
        }
    }

    可以从封闭类以及NestedClass内部访问字段i 。 这个例子也很简单,但更使规范例子错过了。 这种可能性有什么实际用途? 并不是的。

    奖励问题:为什么我说我在说谎?

    翻译自: https://www.javacodegeeks.com/2014/08/java-private-protected-public-and-default.html

    展开全文
  • //受保护 可以被自身、子类、父类访问 private $sub4 = "PYTHON"; //只能被其定义所在的类访问 public const SUB = 'public'; //定义公有的常量 public function test(){ echo $this->sub1; } private...
  • 对类所继承的成员的访问由基类中的成员访问级别和派生类派生列表中使用的访问标号共同控制。 派生类可以进一步限制但不能放松对所继承的成员的访问。 public inheritance:基类成员保持自己的访问级别:基类的...

    对类所继承的成员的访问由基类中的成员访问级别和派生类派生列表中使用的访问标号共同控制。


    派生类可以进一步限制但不能放松对所继承的成员的访问


    • public inheritance:基类成员保持自己的访问级别:基类的public成员为派生类的public成员,基类的protected成员为派生类的protected成员。
    • protected inheritance:基类的public和protected成员在派生类中为protected。
    • private inheritance:基类的所有成员在派生类中为private成员。


    示例:

    class Base
    {
    public:
        void basemen();                // public member
    protected:
        int i;                         // protected member
    	// ...
    };
    
    struct Public_derived : public Base
    {
        int use_base() {return i;}     // ok; derived classes can access i
    	// ...
    };
    
    struct Private_derived : private Base
    {
        int use_base() {return i;}    // ok; derived classes can access i
    };
    
    Base b;
    Public_derived d1;
    Private_derived d2;
    b.basemen();                     // ok;
    d1.basemen();                    // ok; basemen is public in the derived class
    d2.basemen();                    // error; basemen is private in the derived class
    
    
    struct Derived_from_Private : public Private_derived
    {
        // error; Base::i is private in Private_derived
    	int use_base() {return i;}
    };
    
    struct Derived_from_Public : public Public_derived
    {
        // ok; Base::i remains protected in Public_derived
    	int use_base() {return i};
    };


    private inheritance:

    • private继承是实现继承,不是接口继承;
    • 如果classes之间的继承关系是private,编译器不会自动将一个derived class对象转换为一个base class对象;
    • private继承并不意味着is-a关系;
    • private继承在软件设计层面上没有意义,其意义只及于软件实现层面;

    class Base  {  }; 
    class Derived : private Base {  };
    
    void test(Base* rhs){}
    
    Base b;
    Derived d;
    
    test(&b); // ok;
    test(&d); // error;



    展开全文
  • 公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。...公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有...

    原文链接:http://www.cnblogs.com/qlwy/archive/2011/08/25/2153584.html

     

    公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。

    1. 公有继承(public)

    公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。

    2. 私有继承(private)

    私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。

    3. 保护继承(protected)

    保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。

    下面列出三种不同的继承方式的基类特性和派生类特性。

     publicprotectedprivate
    共有继承publicprotected不可见
    私有继承privateprivate不可见
    保护继承protectedprotected不可见

    在上图中:1)基类成员对派生类都是:共有和保护的成员是可见的,私有的的成员是不可见的。

                       2)基类成员对派生类的对象来说:要看基类的成员在派生类中变成了什么类型的成员。如:私有继承时,基类的共有成员和私有成员都变成了派生类中的私有成员,因此对于派生类中的对象来说基类的共有成员和私有成员就是不可见的。

      为了进一步理解三种不同的继承方式在其成员的可见性方面的区别,下面从三种不同角度进行讨论。

    对于公有继承方式

    (1) 基类成员对其对象的可见性:

    公有成员可见,其他不可见。这里保护成员同于私有成员。

    (2) 基类成员对派生类的可见性:

    公有成员和保护成员可见,而私有成员不可见。这里保护成员同于公有成员。

    (3) 基类成员对派生类对象的可见性:

    公有成员可见,其他成员不可见。

    所以,在公有继承时,派生类的对象可以访问基类中的公有成员;派生类的成员函数可以访问基类中的公有成员和保护成员。这里,一定要区分清楚派生类的对象和派生类中的成员函数对基类的访问是不同的。

    对于私有继承方式

    (1) 基类成员对其对象的可见性:

    公有成员可见,其他成员不可见。

    (2) 基类成员对派生类的可见性:

    公有成员和保护成员是可见的,而私有成员是不可见的。

    (3) 基类成员对派生类对象的可见性:

    所有成员都是不可见的。

    所以,在私有继承时,基类的成员只能由直接派生类访问,而无法再往下继承。

    对于保护继承方式

    这种继承方式与私有继承方式的情况相同。两者的区别仅在于对派生类的成员而言,对基类成员有不同的可见性。

    上述所说的可见性也就是可访问性。

    关于可访问性还有另的一种说法。这种规则中,称派生类的对象对基类访问为水平访问,称派生类的派生类对基类的访问为垂直访问。

    看看这样的例子

    #include<iostream>
    using  namespace  std;
    //
    class  A       //父类
    {
    private :
         int  privatedateA;
    protected :
         int  protecteddateA;
    public :
         int  publicdateA;
    };
    //
    class  B : public  A      //基类A的派生类B(共有继承)
    {
    public :
         void  funct()
         {
             int  b;
             b=privatedateA;   //error:基类中私有成员在派生类中是不可见的
             b=protecteddateA; //ok:基类的保护成员在派生类中为保护成员
             b=publicdateA;    //ok:基类的公共成员在派生类中为公共成员
         }
    };
    //
    class  C : private  //基类A的派生类C(私有继承)
    {
    public :
         void  funct()
         {
             int  c;
             c=privatedateA;    //error:基类中私有成员在派生类中是不可见的
             c=protecteddateA;  //ok:基类的保护成员在派生类中为私有成员
             c=publicdateA;     //ok:基类的公共成员在派生类中为私有成员
         }
    };
    //
    class  D : protected  A   //基类A的派生类D(保护继承)
    {
    public :
         void  funct()
         {
             int  d;
             d=privatedateA;   //error:基类中私有成员在派生类中是不可见的
             d=protecteddateA; //ok:基类的保护成员在派生类中为保护成员
             d=publicdateA;    //ok:基类的公共成员在派生类中为保护成员
         }
    };
    //
    int  main()
    {
         int  a;
     
         B objB;
         a=objB.privatedateA;   //error:基类中私有成员在派生类中是不可见的,对对象不可见
         a=objB.protecteddateA; //error:基类的保护成员在派生类中为保护成员,对对象不可见
         a=objB.publicdateA;    //ok:基类的公共成员在派生类中为公共成员,对对象可见
     
         C objC;
         a=objC.privatedateA;   //error:基类中私有成员在派生类中是不可见的,对对象不可见
         a=objC.protecteddateA; //error:基类的保护成员在派生类中为私有成员,对对象不可见
         a=objC.publicdateA;    //error:基类的公共成员在派生类中为私有成员,对对象不可见
     
         D objD;
         a=objD.privatedateA;   //error:基类中私有成员在派生类中是不可见的,对对象不可见
         a=objD.protecteddateA; //error:基类的保护成员在派生类中为保护成员,对对象不可见
         a=objD.publicdateA;    //error:基类的公共成员在派生类中为保护成员,对对象不可见
     
         return  0;
    }

    转载于:https://www.cnblogs.com/zhangbaochong/p/5242999.html

    展开全文
  • 引入Java 8时,我们可以在接口中使用默认方法。 此功能的主要驱动程序是允许扩展接口,同时保留对旧接口版本的向后兼容性。 一个示例是在现有Collection类中引入stream()方法。 有时,当我们想引入几种默认方法时...
  • 在通常的观点中从对象的外部访问私有变量以及方法是不允许的,但是 Java 反射机制可以做到这一点。使用这个功能并不困难,在进行单元测试时这个功能非常有效。本节会向你展示如何使用这个功能。 注意:这个功能只有...
  • python 私有属性和受保护属性

    千次阅读 2019-09-03 10:15:05
    什么是私有属性 在类中定义的属性不提供给外部使用,...x为公有属性,外部可是访问该值。 y为私有属性,外部不能访问该值. class A: def __init__(self, x, y): self.x = x self.__y = y >>> a = A(1...
  • java私有构造函数的作用

    万次阅读 2017-02-26 20:55:47
    使用私有构造函数强化singleton属性。 方法一:公有的静态成员是一个final域,成员的声明很清楚的表达了这个类是一个singleton。 public class Elvis { public class Elvis { private static final Elvis ...
  • 变量访问权限:(默认的为friendly) public 公共: private 私有:只允许本类内部访问 protect 受保护:同一个包的类,及其子类可以访问 friendly 友好(默认的):此时只允许同一个包内的类访问
  • 公有继承,私有继承,保护继承的区别

    万次阅读 多人点赞 2016-04-29 16:01:11
    不管哪种继承方式,父类的私有成员都不可以访问,只有间接的通过公有成员才能获取到私有成员的值 protected存在的意义是当我不想向外部暴露某个函数或者成员变量,但是我又想让派生类知道和访问这个成员...
  •   如果你之前看过其他博客或书,相信它们都会说:子类会继承父类的public,protected成员(有的文档可能直接写子类继承父类的非私有成员),子类对象可直接访问父类的public成员,受保护成员不能直接访问。...
  • 3. 使用私有构造方法或枚类实现 Singleton 属性 单例是一个仅实例化一次的类。单例对象通常表示无状态对象,如函数 (条目 24) 或一个本质上唯一的系统组件。让一个类成为单例会使测试它的客户变得困难,因为除非实现...
  • 当我们想到云中的计算机资源时,通常会想到公共云,例如Google或... 这就是为什么越来越多的公司选择私有云的原因。 一些组织由于其组织文化或出于安全性或监管方面的考虑,无法直接迁移到公共云中,但可以选...
  • 这些概念在.net环境中由于对软件质量要求的提高,越来越到重视。测试公有方法是很容易的,自然而然的就有问题产生了“如何测试protected或private方法”?本文包括: l 总结一些测试私有方法的常用做法; l...
  • kotlin set 私有In this tutorial, we’ll be discussing the various Visibility Modifiers available in Kotlin programming. 在本教程中,我们将讨论Kotlin编程中可用的各种Visibility Modifiers。 Kotlin可见...
  • java反射访问私有变量和私有方法

    千次阅读 2010-06-25 00:31:00
    java反射访问私有变量和私有方法 引言 对于软件开发人员来说,单元测试是一项必不可少的工作。它既可以验证程序的有效性,又可以在程序出现 BUG 的时候,帮助开发人员快速的定位问题所在。但是,在写单元...
  • 类及其组成可以用的修饰符 1、类 默认,public、final、abstract 我们自己定义:public 居多 2、成员变量 四种权限修饰符均可,final、static 我们自己定义:private 居多 ...四种权限修饰符均可,其他不可以 ...
  • Python 不能像Java 那样使用private 修饰符创建私有属性,但是Python 有个简单的机制,能避免子类意外覆盖“私有”属性。 举个例子。有一个Dog 类,这个类的内部用到了mood 实例属性,但是没有将其开放。现在,你...
  • Java反射访问私有变量和私有方法

    千次阅读 2011-04-25 21:03:00
    引言  对于软件开发人员来说,单元测试是一项必不可少的工作。它既可以验证程序的有效性...  尽管有很多经验丰富的程序员认为不应该提倡访问类的私有成员变量或方法,因为这样做违反了 Java 语言
  • 我们是Java开发人员,在Java中已知4种访问修饰符:私有受保护,公共和包。 好吧,除了私有外,最后三个可以通过继承,相同的包或实例从类外部调用。 现在,常见的问题是,可以公开(从外部类中)公开私有吗? 答案...
  • 私有云和公有云区别Cloud storage and computing are no longer a new concept. Cloud is one of the most recognized term in the industry. During the initial stages, it was offered as a service, which ...
  • 公有私有云 混合云 云承诺为我们提供所有灵活性。 有机会在需要时访问无限资源并相应地付款。 我们不再需要花费时间安装,配置和维护服务器; 我们被承诺将有更多的时间来“仅仅编码”。 取而代之的是,我们...
  • 资料一:  引言  对于软件开发人员来说,单元测试是一项必不可少的工作。...本文总结了访问类的非公有成员变量或方法的四种途径,以方便测试人员在需要访问类非公有成员变量或方法时进行选择。
  • 该组织采用深度防御层方法来保护其内部数据中心免分布式拒绝服务(DDoS)攻击。 任何一种安全工具的固有弱点都可以用其他具有更强选择能力的安全工具来克服。 测试环境控制 私有云使组织可以更好地控制PaaS上的...
  • 访问私有方法在通常的观点中从对象的外部访问私有变量以及方法是不允许的,但是Java反射机制可以做到这一点。使用这个功能并不困难,在进行单元测试时这个功能非常有效。本节会向你展示如何使用这个功能。注意:这个...
  • 个人云 私有公有云 是否想了解在实现数字化转型中实施DevOps的最佳实践? 下载免费电子书为什么DevOps是数字化转型的重要组成部分 ! 想像一下装满大型金属机器的简朴无窗房间。 所有这些都用多色电线钩在一起...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,573
精华内容 4,229
关键字:

java公有私有受保护

java 订阅