⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 10-1.cs

📁 java基础方面的一些实例代码
💻 CS
字号:
//10-1
using System;
class A
{   
	public void Func() { Console.WriteLine("Func() in A"); }
	public virtual void VO() { Console.WriteLine("BaseClass.VO()"); }
}
class B:A
{
	public int j;
	new public  void Func() { j=2; Console.WriteLine("Func() in B,  the new member = "+j); }
	public override void VO() { j=2; Console.WriteLine("VO() in B, the new member = "+j);  }
	public void FromBase(){ base.VO();}
}
class C:B
{
	public int k;
	new public  void Func() { k=3; Console.WriteLine("Func() in C, the new member = "+k); }
	public override void VO() {k=3; Console.WriteLine("VO() in C, the new member = "+k); }
}
class D:C
{
	public int m;
	new public  void Func() { m=4; Console.WriteLine("Func() in D, the new member = "+m); }
	new public virtual void VO() { m=4; Console.WriteLine("VO() in D, the new member = "+m);}
}
class E:D
{
	public int n;
	new public  void Func() { n=5; Console.WriteLine("Func() in E, the new member = "+n); }
	public override void VO() { n=5; Console.WriteLine("VO() in E, the new member = "+n);}
}
class Test
{
	static public void VirtualandOverride(A a)
	{
		a.Func();
		a.VO();
	}
	static void Main() 
	{
		A aa= new A();     //基类对象aa
		A ab = new B();    //或者A ab = bb;  基类对象,引用指向派生类对象
		B bb = new B();    //派生类对象bb
		ab.Func();		   //调用非虚方法,输出:“Func() in A”
		bb.Func();		   //调用非虚方法,输出:“Func() in B, the new member = 2”
		aa.VO();		   //输出:“BaseClass.VO()”
		//Console.WriteLine(ab.j);		//错误:A中并不包含对j的定义
		ab.VO();		   //调用虚方法,输出:“VO() in B, the new member = 2”。ab中没有j,但却通过覆盖的方法使用了j
		bb.VO();		   //调用虚方法,输出:“VO() in B, the new member = 2”
		bb.FromBase();		   //输出:“BaseClass.VO()”,表明虽然覆盖了基类的VO(),但是基类的VO()仍然存在
		Console.WriteLine(ab.ToString());//输出:“B”,ab的类型是B?
		//B ba=ab;        //错误: 无法将类型“A”隐式转换为“B”,ab到底是不是B类型?
		Console.WriteLine("Testing");
		VirtualandOverride(aa); // Func() in A // BaseClass.VO()
		VirtualandOverride(ab); // Func() in A // VO() in B, the new member = 2
		A ac =new C();          
		VirtualandOverride(ac);	// Func() in A // VO() in C, the new member = 3	
		A ad =new D();
		VirtualandOverride(ad); // Func() in A // VO() in C, the new member = 3
		A ae=new E();
		VirtualandOverride(ae); // Func() in A // VO() in C, the new member = 3
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -