标签: protected

Java中的间接子类无法访问超类中的受保护成员

为什么在Java中,超类的受保护成员是不可被另一个包中的间接子类访问的?我知道不同包中的直接子类可以访问超类的受保护成员.我认为任何子类都可以访问其继承的受保护成员.

编辑

抱歉新手错误,子类可以访问间接超类的受保护成员.

java inheritance packages protected

3
推荐指数
1
解决办法
1万
查看次数

将属性保护/私有的任何性能原因?

我在学校"学习"了C++,但有几件我不知道的事情,比如编译器可以优化的地方或内容,似乎我已经知道了,inline并且const可以提升一点......

如果性能是一个重要的东西(例如游戏编程),那么放置类属性不是public(privateprotected)允许编译器制作更优化的代码吗?

因为我之前的所有老师都在说它更"安全"或"防止不想要或授权的类访问/行为",但最后,我想知道放置属性是否public可以限制范围,从而加固事物.

我不批评我的老师(我应该),但我所在的编程班不是很先进......

c++ private class protected public

3
推荐指数
1
解决办法
2087
查看次数

创建类的受保护构造函数有什么好处和缺点

我有一个愚蠢的怀疑,但我想听听一些有关它的意见.

我有一个超类(MySuperClass),然后,我有70个继承自这个超类(Bean类)的类.

这个超类的目的是使用反射实现"toString"方法,这样,我确保所有这70个类都有toString方法.这70个类是bean,最终目的是记录类信息而不仅仅是类的实例.

然而,这不是我想要讨论的内容,我想听到的是你对超级类的受保护构造函数,有这个的好处和缺点有什么看法,不仅对于这个特定情况而且对于其他您可以想象的情况或场景.

问候,

费尔

java constructor protected

3
推荐指数
1
解决办法
2459
查看次数

从PHP中的子类访问受保护的方法

我可以使用至少两种基本方法从子类访问受保护的类方法:

parent::myMethod();

$this->myMethod();
Run Code Online (Sandbox Code Playgroud)

如果我不需要在子类中重写它,在这种情况下我将不得不这样做:

function myMethod() {
   ...
   parent::myMethod();
   ...
}
Run Code Online (Sandbox Code Playgroud)

这是最推荐的方式吗?我个人觉得使用parent :: myMethod()而不是$ this-> myMethod更舒服,因为第一个立即告诉我这个方法是继承的.但我不确定哪种方式在性能和最佳实践方面.

编辑:

检查一下,这是我的问题的真实案例.它使用CodeIgniter,但即使你不熟悉它,你也可能会得到它:

class Admin_Controller extends CI_Controller {

    protected function validate_form($validation) {
            $this->load->library('form_validation');
            // This will validate the form sent against the validation rules group specified in $validation
            if ($this->form_validation->run($validation) == false) {   
                    throw new Exception('There are errors in the form');
            }
    }

}

class Articles extends Admin_Controller {

    function save($id) {
            $this->validate_form(strtolower(get_class($this));
            // OR
            parent::validate_form(strtolower(get_class($this));
            // Other actions …
Run Code Online (Sandbox Code Playgroud)

php inheritance codeigniter protected

3
推荐指数
1
解决办法
8851
查看次数

c#中受保护的vs受保护的内部(再次)

我正在提出一个关于protectedvs 的问题(protected internal因为我仍然不确定,并且无法控制它们).

任何帮助深表感谢.

// DLL 1

 namespace Assembly1
  {
    class class1 : class2
    {
      static void Main()
      {
         new class1().Test();
      }

      private void Test()
      {
         Console.WriteLine(this.sample);
      }
    }
 }
Run Code Online (Sandbox Code Playgroud)

// DLL 2

 namespace Assembly2
    {
        public class class2
        {
          // protected string sample = "Test";           
             protected internal string sample = "Test";

       //Same behavior when using protected and protected internal. Why ?

    }
}
Run Code Online (Sandbox Code Playgroud)

我对这两行都有相同的行为.

      // protected string sample = "Test";           
         protected internal string sample = …
Run Code Online (Sandbox Code Playgroud)

.net c# protected access-modifiers

3
推荐指数
2
解决办法
6034
查看次数

为什么Java中的Object类包含受保护的方法?

为什么在Object类中的Java包含受保护的方法,如clone()finalize(),如果使用或写所有的类继承对象的实例方法?

java oop inheritance protected object

3
推荐指数
2
解决办法
1717
查看次数

使用CRTP访问基类的受保护成员

我想问一个关于CRTP的问题。假设您有一个基类和一个派生类,如下所示。有没有一种方法可以从派生类的成员函数之一(例如“ foo”)的基类中提取成员“ value”?

编译器告诉我:错误:在此范围内未声明“值”

#include <iostream>

template <class T, class Implementation>
class FooBase
{
protected:
   void fooBase(void) {};
   int value;
};

template <class T>
class Foo : public FooBase <T, Foo<T>>
{
  friend FooBase <T, Foo<T>>;

  public:
  void foo()
  {
    std::cout << "Its own value is : " << value << std::endl;
  }
};

int main ()

{
  Foo <int> foo;
  foo.foo();

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ protected derived-class crtp

3
推荐指数
1
解决办法
550
查看次数

C++继承:受保护的变量不可用

我在XCode中有以下C++代码,给出了两个我无法理解的错误:

#include <iostream>


class Buch{
public:
    Buch (long int nummer = 0, char autor[25] = (char*)"", int jahr = 0, bool ausgel = false);

    long int getNr();
    int getJahr();

protected:
    long int __nummer;
    char     __autor[25];
    int      __jahr;
    bool     __ausgel;

    void setAusl(bool x);
    bool getAusl();
};

class FachBuch : Buch {
public:
    void setSWort(int sw);
    int getSWort();

protected:
    char     __fach[15];
    int      __swort;
};

class UBuch : Buch {
public:
    void setAlter(int a);
    int getAlter();

protected:
    int      __kateg;
    char     __land[15];

private:
    int …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance protected

3
推荐指数
1
解决办法
1064
查看次数

为何小心使用"受保护"

CoreJavaⅠ一书中,它说......

protected应谨慎使用关键字.如果您使用protected字段设置类,则如果要更改它,则必须通知所有使用此类的程序员.

我不明白.如果Son extends Father,并且Father已经改变,Son则没有受到影响.这样对吗?

java protected

3
推荐指数
1
解决办法
88
查看次数

如何避免受保护的班级成员?

我在许多讨论中都读到,有protected班级成员是坏人,我看到了原因.但是考虑到下面的例子,最优雅的方法是什么,const int age private并解决由此产生的问题?

#include <iostream>

class Animal
{
    public:
        Animal(const int age) : age(age) {}
        void print_age() const { std::cout << age << std::endl; }
    protected:
        const int age;
};

class Dog : public Animal
{
    public:
        Dog(const int age) : Animal(age) {}
        void bark() const
        {
            if (age >= 1)
                std::cout << "Woof!" << std::endl;
            else
                std::cout << "(...)" << std::endl;
        }
};

int main()
{
    Dog dog(1);
    dog.print_age();
    dog.bark();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ oop protected

3
推荐指数
1
解决办法
474
查看次数