时间:2021-05-20
6.sealed修饰符是干什么的?
答:
sealed修饰符表示密封
用于类时,表示该类不能再被继承,不能和abstract同时使用,因为这两个修饰符在含义上互相排斥
用于方法和属性时,表示该方法或属性不能再被继承,必须和override关键字一起使用,因为使用sealed修饰符的方法或属性肯定是基类中相应的虚成员
通常用于实现第三方类库时不想被客户端继承,或用于没有必要再继承的类以防止滥用继承造成层次结构体系混乱
恰当的利用sealed修饰符也可以提高一定的运行效率,因为不用考虑继承类会重写该成员
示例:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceExample06
{
classProgram
{
classA
{
publicvirtualvoidF()
{
Console.WriteLine("A.F");
}
publicvirtualvoidG()
{
Console.WriteLine("A.G");
}
}
classB:A
{
publicsealedoverridevoidF()
{
Console.WriteLine("B.F");
}
publicoverridevoidG()
{
Console.WriteLine("B.G");
}
}
classC:B
{
publicoverridevoidG()
{
Console.WriteLine("C.G");
}
}
staticvoidMain(string[]args)
{
newA().F();
newA().G();
newB().F();
newB().G();
newC().F();
newC().G();
Console.ReadLine();
}
}
}
结果:
类B在继承类A时可以重写两个虚函数,如图所示:
由于类 B 中对 F 方法进行了密封, 类 C 在继承类 B 时只能重写一个函数,如图所示:
控制台输出结果,类C的方法F只能是输出类B中对该方法的实现:
A.F
A.G
B.F
B.G
B.F
C.G
7.override和overload的区别?
答:
override表示重写,用于继承类对基类中虚成员的实现
overload表示重载,用于同一个类中同名方法不同参数(包括类型不同或个数不同)的实现
示例:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceExample07
{
classProgram
{
classBaseClass
{
publicvirtualvoidF()
{
Console.WriteLine("BaseClass.F");
}
}
classDeriveClass:BaseClass
{
publicoverridevoidF()
{
base.F();
Console.WriteLine("DeriveClass.F");
}
publicvoidAdd(intLeft,intRight)
{
Console.WriteLine("AddforInt:{0}",Left+Right);
}
publicvoidAdd(doubleLeft,doubleRight)
{
Console.WriteLine("Addforint:{0}",Left+Right);
}
}
staticvoidMain(string[]args)
{
DeriveClasstmpObj=newDeriveClass();
tmpObj.F();
tmpObj.Add(1,2);
tmpObj.Add(1.1,2.2);
Console.ReadLine();
}
}
}
结果:
BaseClass.F
DeriveClass.F
AddforInt:3
Addforint:3.3
8.什么是索引指示器?
答:
实现索引指示器(indexer)的类可以象数组那样使用其实例后的对象,但与数组不同的是索引指示器的参数类型不仅限于int
简单来说,其本质就是一个含参数属性
示例:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceExample08
{
publicclassPoint
{
privatedoublex,y;
publicPoint(doubleX,doubleY)
{
x=X;
y=Y;
}
//重写ToString方法方便输出
publicoverridestringToString()
{
returnString.Format("X:{0},Y:{1}",x,y);
}
}
publicclassPoints
{
Point[]points;
publicPoints(Point[]Points)
{
points=Points;
}
publicintPointNumber
{
get
{
returnpoints.Length;
}
}
//实现索引访问器
publicPointthis[intIndex]
{
get
{
returnpoints[Index];
}
}
}
//感谢watsonhua(http://huazhihao.cnblogs.com/)的指点
//索引指示器的实质是含参属性,参数并不只限于int
classWeatherOfWeek
{
publicstringthis[intIndex]
{
get
{
//注意case段使用return直接返回所以不需要break
switch(Index)
{
case0:
{
return"Todayiscloudy!";
}
case5:
{
return"Todayisthundershower!";
}
default:
{
return"Todayisfine!";
}
}
}
}
publicstringthis[stringDay]
{
get
{
stringTodayWeather=null;
//switch的标准写法
switch(Day)
{
case"Sunday":
{
TodayWeather="Todayiscloudy!";
break;
}
case"Friday":
{
TodayWeather="Todayisthundershower!";
break;
}
default:
{
TodayWeather="Todayisfine!";
break;
}
}
returnTodayWeather;
}
}
}
classProgram
{
staticvoidMain(string[]args)
{
Point[]tmpPoints=newPoint[10];
for(inti=0;i<tmpPoints.Length;i++)
{
tmpPoints[i]=newPoint(i,Math.Sin(i));
}
PointstmpObj=newPoints(tmpPoints);
for(inti=0;i<tmpObj.PointNumber;i++)
{
Console.WriteLine(tmpObj[i]);
}
string[]Week=newstring[]{"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Staurday"};
WeatherOfWeektmpWeatherOfWeek=newWeatherOfWeek();
for(inti=0;i<6;i++)
{
Console.WriteLine(tmpWeatherOfWeek[i]);
}
foreach(stringtmpDayinWeek)
{
Console.WriteLine(tmpWeatherOfWeek[tmpDay]);
}
Console.ReadLine();
}
}
}
结果:
X:0,Y:0
X:1,Y:0.841470984807897
X:2,Y:0.909297426825682
X:3,Y:0.141120008059867
X:4,Y:-0.756802495307928
X:5,Y:-0.958924274663138
X:6,Y:-0.279415498198926
X:7,Y:0.656986598718789
X:8,Y:0.989358246623382
X:9,Y:0.412118485241757
Todayiscloudy!
Todayisfine!
Todayisfine!
Todayisfine!
Todayisfine!
Todayisthundershower!
Todayiscloudy!
Todayisfine!
Todayisfine!
Todayisfine!
Todayisfine!
Todayisthundershower!
Todayisfine!
12下一页阅读全文
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
软件著作权可以延续。《计算机软件保护条例》第15条规定,除开发者的身份权外,软件著作权人的其余各项权利的保护期为二十五年,截止于软件首次发表后第二十五年的十二月
1月28日消息,《》获悉,佳怡快运昨日表示,公司放假时间定于2021年2月6日(农历腊月二十五)至2021年2月20日(农历正月初九),即2021年2月4日(农
由国copy务院于2018年3月2日发布,自2018年5月1日起施行的“快递暂行条例”第二十五条规定“经营快递业务的企业应当将快件投递到约定的收件地址、收件人或
C#代码与javaScript函数的相互调用问:1.如何在JavaScript访问C#函数?2.如何在JavaScript访问C#变量?3.如何在C#中访问Ja
鞋帽商标所属类别是: 鞋子商标主要是在第二十五类-服装鞋帽 2507-鞋 2508-帽 知识产权。