C#中new关键字的用法及理解
class Vehicle//定义汽车类
{
public int wheels;
protected float weight;
public Vehicle()
{
;
}
public Vehicle(int w, float g)
{
wheels = w;
weight = g;
}
public void Show()
{
Console.WriteLine("the wheel of vehicle is :{0}", wheels);
Console.WriteLine("the weight of vehicle is :{0}", weight);
}
}
class train//定义火车类
{
public int num;
private int passengers;
private float weight;
public train()
{
;
}
public train(int n, int p, float w)
{
num = n; passengers = p; weight = w;
}
public void Show()
{
Console.WriteLine("the num of train is:{0}", num);
Console.WriteLine("the weight of train is:{0}", weight);
Console.WriteLine("the passengers of train is:{0}", passengers);
}
}
class Car : Vehicle
{
int passengers;
public Car(int w, float g, int p)
: base(w, g)
{
wheels = w;
weight = g;
passengers = p;
}
new public void Show()
{
Console.WriteLine("the wheels of Car is:{0}", wheels);
Console.WriteLine("the weight of Car is:{0}", weight);
Console.WriteLine("the passengers of Car is:{0}", passengers);
}
}
class Test
{
public static void Main()
{
Vehicle v1 = new Vehicle(4, 5);
train t1 = new train();
train t2 = new train(10, 100, 100);
Car c1 = new Car(4, 2, 4);
v1.Show();
t1.Show();
t2.Show();
c1.Show();
Console.Read();
}
}
这句话 new public void Show()
中的new 是什么意思,有什么作用 展开
new public void Show()中的new是隐藏基类Show作用。
在子类Show中写一个和基类Show一样名字的非虚方法,会让基类中的函数被隐藏,编译后会提示要求使用New关键字来显示的隐藏基类的方法。
C#中new关键字的用法
1.new 运算符 用于创建对象和调用构造函数。
2.new 修饰符 用于隐藏基类成员的继承成员。
3.new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。
扩展资料
1.方法的重载
重载:指的是同一个类中有两个或多个名字相同但是参数不同的方法,(注:返回值不能区别函数是否重载),重载没有关键字。
作用:允许你以相同的名称不同的参数来调用多个方法
2.方法的重写
重写:是指子类对父类中虚函数或抽象函数的“覆盖”。
特点:
(1)重写的父类中的方法必须用 virtual、abstract 或 override 修饰,且不能重写非虚方法或静态方法。
(2)override的方法和virtual的方法必须具有相同的访问级别修饰符。
3.方法的隐藏(New)
隐藏:在子类中写一个和基类一样名字(参数不同也算)的非虚方法,会让基类中的函数被隐藏,编译后会提示要求使用New关键字来显示的隐藏基类的方法。
参考资料
https://baike.baidu.com/item/重载
(1)new 运算符 用于创建对象和调用构造函数。
(2)new 修饰符 用于隐藏基类成员的继承成员。
(3)new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。
new 运算符
1.用于创建对象和调用构造函数
例:Class_Test MyClass = new Class_Test();
2.也用于为值类型调用默认的构造函数
例:int myInt = new int();
myInt 初始化为 0,它是 int 类型的默认值。该语句的效果等同于:int myInt = 0;
3.不能重载 new 运算符。
4.如果 new 运算符分配内存失败,则它将引发 OutOfMemoryException 异常。
new 修饰符
使用 new 修饰符显式隐藏从基类继承的成员。若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。