黑马程序员技术交流社区
标题:
【分享】关于覆盖
[打印本页]
作者:
许庭洲
时间:
2012-10-9 14:14
标题:
【分享】关于覆盖
程序清单:
using System
class Vehicle //定义汽车类
{
int wheels;//公有成员:轮子个数
protected float weight; //保护成员:重量
public Vehicle(){;}
public Vehicle(int w,float g){
wheels = w;
weight = g;
}
public void Speak(){
Console.WriteLine("the w vehicle is speaking!");
}
};
class Car:Vehicle //定义轿车类:从汽车类中继承
{
int passenger; //私有成员:乘客数
public Car(int w,float g,int p):base(w,g)
{
wheels = w;
weight = g;
passengers = p;
}
}
类Car继承了Vehicle的Speak()方法。在这里可以给Car类也声明一个Speak()方法,覆盖Vehicle中的Speak,见下面的代码:
using System;
class Vehicle//定义汽车类
{
public int wheels;//公有成员:轮子个数
protected float weight; //保护成员:重量
public Vehicle(){;};
public Vehicle(int w,float g){
wheels = w;
weight = g;
}
public void Speak(){
Console.WriteLIne("the w vehicle is speaking!");
}
}
class Car:Vehicle//定义轿车类
{
int passengers;//私有成员:乘客数
public Car(int w,float g,int p){
wheels = w;
weight = g;
passengers = p;
}
new public void Speak(){
Console.WriteLine("Di-di!");
}
}
注意:如果在成员声明中加了new关键字修饰符,而该成员事实上并没有覆盖继承的成员,编译器将会给出警告。在一个成员声明同时使用new和override 则编译器会报告错误。
作者:
刘俊红
时间:
2012-10-10 09:47
这个new可以隐藏它上面所有基类的相同签名方法。
为什么要用new呢。
如果基类的同名方法没有virtual,没有virtual就不能被override,只能通过new来强制隐藏父类方法,并实现自己的方法。
作者:
黑马连家华
时间:
2012-10-10 12:57
你这分数什么情况
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2