星期四 2006年11月2日
C#语言中类的相关知识(二)
1.静态
静态是属于类的而不属于类的实例,不需要对类进行实例化即可访问静态的东西。
静态对象的访问
注意:
Java中:静态方法不能访问非静态成员
静态方法中不能使用This指针
静态方法不能被覆盖成非静态方法
C#: 与Java相同,属性也可定义成静态的,但字段都得写成静态的
2.单态模式(只能有一个实例)
1)把构造方法做成私有的
2)通过静态方法得到实例
3)做静态计数器
4)定义静态的本类引用
ex:
class student
{
private static int cnt = 0;
private static student s;
private student()
{
}
public static student getInstnce()
{
if(cnt==0)
{
s=new student();
cnt++;
}
return s;
}
}
3.密封类
如果不想让别的类生成该类的子类可用关键字sealed修饰该类.即用sealed修饰的类将不会产生子类,它是一个终结的类,
C#中称其为密封类(好比Java中的final关键字)
子C#语言中sealed不能修饰方法和字段,而在Java中final即可修饰类、方法又可修饰属性。
4.接口
Java中的接口可以包括方法和属性,且属性必须为常量
C#中的接口只可包括方法,而不存在常量和变量(C#中常量是属于静态的)
5.委托
1)定义委托
访问控制符 delegate 返回值类型 委托名(参数列表)
2)委托的实现代码
这个方法的原型要与声明的原型相同(返回值参数)
3)声明一个委托变量
public 委托名 委托变量
4)让委托的变量指向委托的实现
委托实例.委托变量 = new 委托类型(实现方法的方法名)
5)引发委托
变量的参数类型应当和声明的一样
6)调用
无参数委托实例:
namespace ConsoleApplication1
{
public class child
{
//定义委托
public delegate void myprint();
//声明一个委托变量
public myprint aaaa;
//引发委托
public void print()
{
aaaa();
}
}
class people
{
//委托的实现代码
public void print()
{
Console.WriteLine("我是小孩,委托别人养宠物");
}
public static void Main()
{
people p = new people();
child c = new child();
//让委托变量指向委托的实现
c.aaaa = new ConsoleApplication1.child.myprint(p.print);
c.print();
}
}
}
带有参数的委托实例:
namespace ConsoleApplication1
{
public class Account
{
//定义委托
public delegate void mycheck(bool flag);
//声明了一个委托变量
public mycheck check;
//引发委托
public void login(string username,string pwd)
{
if(check==null)
{
return;
}
if(username.Equals("zhangsan") && pwd.Equals("001"))
{
check(true);
return;
}
check(false);
}
}
class User1
{
//委托的实现代码
public static void on_login(bool f)
{
if(f==true)
{
Console.WriteLine("OKKKKKKKKKKKKKKK");
return;
}
Console.WriteLine("ERRRRRRRRRRRRR");
}
public static void Main()
{
Account account =new Account();
//User1 u=new User1();
//让委托变量指向委托的实现
account.check+=new ConsoleApplication1.Account.mycheck(User1.on_login);
account.check+= new ConsoleApplication1.Account.mycheck(User1.on_login);
//调用
account.login("zhangsan","001");
}
}
}
11月2日小结
最新推荐文章于 2024-07-18 16:22:57 发布