Chinaunix首页 | 论坛 | 博客
  • 博客访问: 35103
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 252
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-21 18:30
文章分类
文章存档

2014年(13)

我的朋友

分类: C#/.net

2014-02-24 17:38:06

//java版
class A
{
     public static int i =10;
     public void show()
     {
     System.out.printf("%d\n",this.i);
     }
}
class B extends A
{
public void show()
{
//super.show();
System.out.println("BBBBB");
}
}
class M
{
     public static void main(String [] args)
     {
          A aa1 = new  A();
          aa1.show();//10
          B bb1 = new B();
          bb1.show();//BBBBB
          A aa2 = new B();
          aa2.show();//BBBBB
     }
}
//c#版  正常类方法
class Program
{
static void Main(string[] args)
{
A aa1 = new A();
aa1.show();//10
B bb1 = new B();
bb1.show();//BBBBB
A aa2 = new B();
aa2.show();//10
}
}
class A
{
public int i = 10;
public void show()
{
Console.WriteLine(i);
}
}
class B : A
{
public new void show()
{
//base.show();
Console.WriteLine("BBBBB");
}
}
//C#版 虚方法
class Program
{
static void Main(string[] args)
{
A aa1 = new A();
aa1.show();//10
B bb1 = new B();
bb1.show();//BBBBB
A aa2 = new B();
aa2.show();//BBBBB
}
}
class A
{
public int i = 10;
public virtual void show()
{
Console.WriteLine(i);
}
}
class B : A
{
public override void show()
{
//base.show();
Console.WriteLine("BBBBB");
}
}


java中无论是子类还是父类,都只看实例化的是哪个类,然后调用的方法便是对应类的方法。子类实例若调用父类方法,可通过super关键字。

c#对于正常的类型继承来说,子类即便通过new覆盖父类方法,也只看声明的类型,然后调用方法。

对于虚方法(virtual),父类只提供默认的调用方法,子类override之后,则和java一样按照实例化的类型来选择调用的方法。
阅读(645) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~