C# protected修饰符

protected修饰符:

在定义protected方法的类可以访问或者继承定义该方法的类的子类内部可以访问,即如果类A定义了protected方法,则类A可以使用以及继承了A的子类内可以访问;

示例:

    public class _20210213_1
    {
        public void Run()
        {
            _20210213_1_Animal animal = new _20210213_1_Animal();
            animal.Animal_Method1();
            // animal.Animal_Protected1(); // 错误,无法访问

            _20210213_1_Dog dog = new _20210213_1_Dog();
            dog.Animal_Method1();
            //dog.Animal_Protected1(); // 错误无法访问
        }
    }

    public class _20210213_1_Animal
    {
        public void Animal_Method1()
        {
            // 正确,本类可以访问protected方法
            Animal_Protected1();
            Console.WriteLine("Animal_Method1");
        }

        protected void Animal_Protected1()
        {
            Console.WriteLine("Animal_Protected1");
        }
    }

    public class _20210213_1_Dog : _20210213_1_Animal
    {
        public void Run()
        {
            // 正确,在子类内可以访问父类Animal_Protected1方法
            Animal_Protected1();
        }
    }

分析:类_20210213_1_Animal定义的Animal_Protected1在类_20210213_1_Animal内部可以使用,在继承_20210213_1_Animal的类_20210213_1_Dog 可以使用Animal_Protected1方法,在这两个类外(比如在类_20210213_1定义的_20210213_1_Animal实例和_20210213_1_Dog 实例就无法访问Animal_Protected1方法)无法使用。

posted @ 2021-02-18 19:27  温故纳新  阅读(405)  评论(0编辑  收藏  举报