| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 989 人关注过本帖
标题:修饰符
只看楼主 加入收藏
rgbtdkjcel
Rank: 1
等 级:新手上路
帖 子:294
专家分:0
注 册:2007-3-26
结帖率:50%
收藏
 问题点数:0 回复次数:20 
修饰符
class A
{
public void F()
{ Console.WriteLine("A.F");
}
public virtual void G() { Console.WriteLine("A.G");}
}
class B: A
{
new public void F(){Console.WriteLine("B.F");}
public override void G() {Console.WriteLine("B.G"); }
}
class Test
{
static void Main()
{
B b = new B();
A a = b;
a.F();
b.F();
a.G();
b.G();
}
}

此例中的new 与virual修饰服是什么意思呢???
搜索更多相关主题的帖子: public 
2007-09-20 09:20
jasonxie
Rank: 1
等 级:新手上路
威 望:2
帖 子:225
专家分:0
注 册:2007-3-19
收藏
得分:0 
这个书上应该有的吧~~~~~
new关键字是隐藏基类的方法,virtual关键字是方法需要在它继承类中重写,与它对应的关键字就是override。

你是我心内的一首歌,不要只是个过客;在我生命留下一首歌,无论结局会如何.
2007-09-20 09:34
jxnuwy04
Rank: 2
等 级:新手上路
威 望:4
帖 子:768
专家分:0
注 册:2006-9-15
收藏
得分:0 
好像之前有这方面的帖子,帮你找找.

------------------不为别的,就为你,我的理想!-----------------
2007-09-20 09:35
jxnuwy04
Rank: 2
等 级:新手上路
威 望:4
帖 子:768
专家分:0
注 册:2006-9-15
收藏
得分:0 

------------------不为别的,就为你,我的理想!-----------------
2007-09-20 09:37
rgbtdkjcel
Rank: 1
等 级:新手上路
帖 子:294
专家分:0
注 册:2007-3-26
收藏
得分:0 
new是隐藏基类中的方法还是隐藏子类中的方法呢??


c sharp初学者
2007-09-20 10:31
jxnuwy04
Rank: 2
等 级:新手上路
威 望:4
帖 子:768
专家分:0
注 册:2006-9-15
收藏
得分:0 
这样跟你说吧:比如A是基类,B是子类 即:
class A
{
public void test()
{
Console.WriteLine("A");
}
}
class B : A
{
new public void test()
{
Console.WriteLine("B");
}
}
当这样声明一个实例时:A a=new B(); 结果是 A
A a=new A(); 结果是A
B a=new B(); 结果是B
不知道这样能理解不?

------------------不为别的,就为你,我的理想!-----------------
2007-09-20 10:47
jasonxie
Rank: 1
等 级:新手上路
威 望:2
帖 子:225
专家分:0
注 册:2007-3-19
收藏
得分:0 
new是隐藏基类中的方法。但是仍然可以通过基类来访问被隐藏的方法。
比如楼上的例子
class A
{
public void test()
{
Console.WriteLine("A");
}
}
class B : A
{
new public void test()
{
Console.WriteLine("B");
}
}
A a = new A(); //结果是A
B b = new B(); //结果是B
A c = new B(); //结果是A,通过基类可以访问被new隐藏的方法

你是我心内的一首歌,不要只是个过客;在我生命留下一首歌,无论结局会如何.
2007-09-20 10:54
chen85cong
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-9-20
收藏
得分:0 
C#的访问修饰符有五种
public 级别最高 任何地方均可访问
protected 受保护的 仅限于包含类或从包含类派生的类型(即本类和子类中可访问)
internal 内在的 仅在同一程序集下可访问
protected internal 保护内在的 仅在本类派生的当前程序集或类型中可访问
private 私有的 类内访问
2007-09-20 11:01
rgbtdkjcel
Rank: 1
等 级:新手上路
帖 子:294
专家分:0
注 册:2007-3-26
收藏
得分:0 
不明白为什么A c=new B() //结果是A的实例呢???是不是这个问题new修饰符的作用呢??



c sharp初学者
2007-09-20 11:04
jxnuwy04
Rank: 2
等 级:新手上路
威 望:4
帖 子:768
专家分:0
注 册:2006-9-15
收藏
得分:0 
其实有没有关键字new都没关系,至少可以运行不会报错,结果也正确,但是不加new的话编译的时候会有一个警告!这里A c=new B()关键在于A,即c的类型是A.

------------------不为别的,就为你,我的理想!-----------------
2007-09-20 12:13
快速回复:修饰符
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027707 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved