特别的构造函数:构造函数的修饰

构造函数并不一定都是public的,以下的代码是不是另拟感到构造函数的奇特阿?

 1 None.gif      public   class  Class1 // 永远无法被实例化的类
 2 ExpandedBlockStart.gifContractedBlock.gif      dot.gif {
 3InBlock.gif        //这个类没有可以被外部访问的构造函数
 4InBlock.gif        private Class1()
 5ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 6ExpandedSubBlockEnd.gif        }

 7ExpandedBlockEnd.gif    }

 8 None.gif
 9 None.gif     public   class  Class2 // 只可以在本程序内实例化的类
10 ExpandedBlockStart.gifContractedBlock.gif      dot.gif {
11InBlock.gif        internal Class2()
12ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
13ExpandedSubBlockEnd.gif        }

14ExpandedBlockEnd.gif    }

15 None.gif
16 None.gif     public   class  Class3 // 只可以通过自身实例化的类
17 ExpandedBlockStart.gifContractedBlock.gif      dot.gif {
18InBlock.gif        private Class3()
19ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
20ExpandedSubBlockEnd.gif        }

21InBlock.gif        //private的构造函数可以被自身的方法调用,所以可以用Class3.CreateClass3()来创建实例
22InBlock.gif        public static Class3 CreateClass3()
23ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
24InBlock.gif            return new Class3();
25ExpandedSubBlockEnd.gif        }

26ExpandedBlockEnd.gif    }

27 None.gif
28 None.gif     public   class  Class4
29 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
30InBlock.gif        //Class4不能被实例化,但又要求子类在继承时构造有参
31InBlock.gif        protected Class4(int i)
32ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{ }
33InBlock.gif
34ExpandedBlockEnd.gif    }

35 None.gif
36 None.gif     public   class  Class4Sub : Class4
37 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
38InBlock.gif
39InBlock.gif        public Class4Sub(int i)
40InBlock.gif            : base(i)
41ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
42InBlock.gif
43ExpandedSubBlockEnd.gif        }

44ExpandedBlockEnd.gif    }

45 None.gif    
46 None.gif     public   class  Class5 // 要求子类必须显示调用父类构造函数的
47 ExpandedBlockStart.gifContractedBlock.gif      dot.gif {
48InBlock.gif        public Class5(int i)
49ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{ }
50ExpandedBlockEnd.gif    }

51 None.gif
52 None.gif     public   class  Class5Sub : Class5
53 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
54InBlock.gif        public Class5Sub()
55InBlock.gif            : base(0)
56ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{ }
57InBlock.gif        public Class5Sub(int i)
58InBlock.gif            : base(i)
59ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{ }
60ExpandedBlockEnd.gif    }

转载于:https://www.cnblogs.com/shyleoking/archive/2007/02/07/644089.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值