zoukankan      html  css  js  c++  java
  • .net知识和学习方法系列(二十三)嵌套类

    近日有个朋友问我这样一个问题,代码如下:

        class ExtClass

        {

            string s = "字段";

            public class NestClass

            {

                ExtClass EC = new ExtClass();

                //问题一: EC.s  

                public void saya()

                {

                }

            }

            public void FF()

            {

                NestClass NC = new NestClass();

                //问题二:NC.EC

            }

    }

    第一个问题:在“问题一”的地方怎么用EC调用不出s这个字段,按道理说,NestClasss都是类ExtClass 的成员,他们的修饰符不管是private还是public,都是能互相访问到的。这个理解应该不算错误,因为我们知道,在同一个类中,成员之间是可以该问的,与修饰没有关系,但现在一个问题是EC.s是调用不出来的。其实问题不在于成员调用成员,在于在类内部去调用对象的成员,这是不充许的,这种调用只能在成员的内部去应用(本质上是在方法内部去调用,因为不管理是属性,还是索引器是在getset的实现部分去调用的,getset本质是又都是方法,所以说本质上是在方法的实现中调用。)

    第二个问题:用NC去调用EC。从代码中,我们能知识,EC这个对象是NestClass类,的一个字段,现在的NestClass类与FF方法又都在ExtClass类的内部,同属于这个类的成员,怎么又访问不到了呢?其实在这里有一个概念问题,就是类成员的问题,这里的类成员不是普通的方法,属性等,而是一个类,一个嵌套类,对于一个类来说,不管是内部还是外部,它还是一个完整人体系的,它也有自己的成员,并且这个类的成员同样有自己的修饰符,我们知道,在类内部,如果不给成员添加修饰符的话,默认为private,这时的EC的修饰符是private,是私有的,它是不能会被本类外部的类或成员访问的,也可以这样去理解,NestClass类与FF方法是一个等级的(同属于类ExtClass的成员),FFNestClass类内部的成员不属于一个级别的(NestClass内部的private成员只对NestClass其他成员来说是能访问到的),所以在FF方法中是没有办法访问到类NestClass内部的私有成员的,如果现在我们把EC的实例化前加一个public,就可以在FF方法内去使用NC.EC来调用EC了。

    从上面的例子可以看出来,不管是类还是嵌套类,类的通用的一些规则都是一样的,不会因为位置的不同而不同。但嵌套类出现的地方是比较特殊的,这时我们要分清级别(及类与成员)的关系,去分析应用。

    ****欢迎关注我的asp.net core系统课程****
    《asp.net core精要讲解》 https://ke.qq.com/course/265696
    《asp.net core 3.0》 https://ke.qq.com/course/437517
    《asp.net core项目实战》 https://ke.qq.com/course/291868
    《基于.net core微服务》 https://ke.qq.com/course/299524
  • 相关阅读:
    GATK-BWA-MEM handle GRCh38 alternate contig mappings
    GATK使用说明-GRCh38(Genome Reference Consortium)(二)
    GATK使用说明(一)
    [python] 线程池
    [python] 线程锁
    [python] 线程简介
    [linux] 更改目录显示颜色
    限制登录次数
    项目经验总结-twice
    Java泛型底层源码解析--ConcurrentHashMap(JDK1.6/JDK1.7/JDK1.8)
  • 原文地址:https://www.cnblogs.com/axzxs2001/p/1355223.html
Copyright © 2011-2022 走看看