Class的访问权限(public ,private,protected,internal)

概念:

1.值类型:数据存储在内存的堆栈中,从堆栈中可以快速地访问这些数据,因此,值类型表示实际的数据。

2.引用类型:表示指向存储在内存堆中的数据的指针或引用(包括类、接口、数组和字符串)。

 

new运算符:

        (1)用于创建对象和调用构造函数。 例如:                 

           Class1 obj  = new Class1();
     (2)还可用于创建匿名类型的实例: 
        var query = from cust in customers
                    select new {Name = cust.Name, Address = cust.PrimaryAddress};
     (3)new 运算符还用于调用值类型的默认构造函数。 例如:
                 int i = new int();
          在上一个语句中,i 初始化为 0,它是 int 类型的默认值。 该语句的效果等同于:
          int i = 0;
 
 
 
 

 

 

Class的访问权限:

                        Internal      Protected  Internal       Protected       Private         Public 

属性或方法

同一个类中:         Y                      Y                            Y                     Y                Y 

 

子类:                 Y                      Y                            Y                     N               Y 

 

引用   :             N                      -无                          --无                 --无                Y 

 

同一命名空间        Y                      Y                            N                    N                Y 

 

 

子类不能比父类的存取范围低:如 

internal   class Class1      {}

public class Test : Class1   {}

这样会报错:錯誤   1     不一致的存取範圍: 基底類別 'InterNalClass.Class1' 比類別 'InterNalClass.Test' 存取範圍低    

 

顶级类中只能是Public或者是Internal 修饰,如:

 Namespace  test

{

       Public class ll  {}                //顶级类

}

 

同一个类中,Function调用嵌套类的:   Class  ll =new Class();,

Namespace  test

{

       Public class ll                  //顶级类

      {

         public class C_Public

        {

            public static int publicInt=0;

            internal static int internalInt=0;

            private static int privateInt = 0;

            protected internal int protectedInternal = 0;

        }

       Public  void function()

      {

            C_Public ll = new C_Public();          //new  与直接调用有什么区别啊???

            ll.protectedInternal = 1;                //只有一个

 

            C_Public.publicInt = 2;                   //有两个属性 

            C_Public.internalInt = 3; 

       }

       }

}

 

 

转载于:https://www.cnblogs.com/alexzp/archive/2011/12/18/2291910.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Kotlin中,`internal`是一种访问修饰符,用于限制在同一个模块(module)内可见的元素。 当你将一个类、函数、属性或者其他声明标记为`internal`时,它将只能在同一个模块内被访问和使用,而对于其他模块是不可见的。模块是指编译时的一组Kotlin文件,可以是一个项目、一个库或者一个模块化的应用程序。 使用`internal`修饰符可以帮助你控制模块内的可见性,使得一些实现细节或者内部逻辑只对模块内部可见,而对外部是隐藏的。这有助于减少模块间的耦合性,并提供了更好的封装性。 下面是一个示例,展示了如何使用`internal`修饰符: ```kotlin // ModuleA.kt package com.example.moduleA internal class InternalClass { internal fun internalMethod() { println("Internal method") } } // ModuleB.kt package com.example.moduleB fun main() { val obj = com.example.moduleA.InternalClass() obj.internalMethod() // 在同一个模块内可见,可以访问和调用 } ``` 在上面的示例中,`InternalClass`被标记为`internal`,只能在同一个模块内被访问。在`ModuleB.kt`中,我们可以通过完整的限定名`com.example.moduleA.InternalClass`来访问并创建`InternalClass`的实例,并调用其`internalMethod()`方法。 请注意,`internal`修饰符默认是公共的(public)级别,但只在模块内可见。如果需要,你可以显式地将`internal`与其他访问修饰符(如`private`或`protected`)结合使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值