<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FClass%2Foverride</id>
		<title>Csharp/CSharp Tutorial/Class/override - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FClass%2Foverride"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Class/override&amp;action=history"/>
		<updated>2026-04-30T00:12:11Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Class/override&amp;diff=5709&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Class/override&amp;diff=5709&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:53Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Class/override&amp;diff=5710&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Class/override&amp;diff=5710&amp;oldid=prev"/>
				<updated>2010-05-26T12:16:16Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==new method: not override==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
class BaseClass&lt;br /&gt;
{&lt;br /&gt;
   virtual public void Print()&lt;br /&gt;
   { Console.WriteLine(&amp;quot;This is the base class.&amp;quot;); }&lt;br /&gt;
}&lt;br /&gt;
class DerivedClass : BaseClass&lt;br /&gt;
{&lt;br /&gt;
   override public void Print()&lt;br /&gt;
   { Console.WriteLine(&amp;quot;This is the derived class.&amp;quot;); }&lt;br /&gt;
}&lt;br /&gt;
class SecondDerived : DerivedClass&lt;br /&gt;
{&lt;br /&gt;
   new public void Print()&lt;br /&gt;
   {&lt;br /&gt;
      Console.WriteLine(&amp;quot;This is the second derived class.&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
   static void Main()&lt;br /&gt;
   {&lt;br /&gt;
      SecondDerived derived = new SecondDerived();&lt;br /&gt;
      BaseClass mybc = (BaseClass)derived;&lt;br /&gt;
      derived.Print();&lt;br /&gt;
      mybc.Print();&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;B.DoSomething&lt;br /&gt;
A.DoSomething&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overridden Equals()==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
class Person&lt;br /&gt;
{&lt;br /&gt;
    public Person(string fname, string lname, string ssn, byte a)&lt;br /&gt;
    {&lt;br /&gt;
    FirstName = fname;&lt;br /&gt;
    LastName = lname;&lt;br /&gt;
    SSN = ssn;&lt;br /&gt;
    age = a;&lt;br /&gt;
    }&lt;br /&gt;
  public string FirstName;&lt;br /&gt;
  public string LastName;&lt;br /&gt;
  public string SSN;&lt;br /&gt;
  public byte age;&lt;br /&gt;
  public override bool Equals(object o)&lt;br /&gt;
  {&lt;br /&gt;
    Person temp = (Person)o;&lt;br /&gt;
    if(temp.FirstName == this.FirstName &amp;amp;&amp;amp;&lt;br /&gt;
       temp.LastName == this.LastName &amp;amp;&amp;amp;&lt;br /&gt;
       temp.SSN == this.SSN &amp;amp;&amp;amp;&lt;br /&gt;
       temp.age == this.age)&lt;br /&gt;
    {&lt;br /&gt;
      return true;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
      return false;&lt;br /&gt;
  }&lt;br /&gt;
  public override string ToString()&lt;br /&gt;
  {&lt;br /&gt;
    StringBuilder sb = new StringBuilder();&lt;br /&gt;
          sb.AppendFormat(&amp;quot;[FirstName= {0}&amp;quot;, this.FirstName);&lt;br /&gt;
          sb.AppendFormat(&amp;quot; LastName= {0}&amp;quot;, this.LastName);&lt;br /&gt;
          sb.AppendFormat(&amp;quot; SSN= {0}&amp;quot;, this.SSN);&lt;br /&gt;
          sb.AppendFormat(&amp;quot; Age= {0}]&amp;quot;, this.age);&lt;br /&gt;
    return sb.ToString();&lt;br /&gt;
  }&lt;br /&gt;
  public override int GetHashCode()&lt;br /&gt;
  {&lt;br /&gt;
    return SSN.GetHashCode();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main(string[] args)&lt;br /&gt;
    {&lt;br /&gt;
    Person p1 = new Person(&amp;quot;Fred&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;222-22-2222&amp;quot;, 98);&lt;br /&gt;
    Person p2 = new Person(&amp;quot;Fred&amp;quot;, &amp;quot;Jones&amp;quot;, &amp;quot;222-22-2222&amp;quot;, 98);&lt;br /&gt;
    &lt;br /&gt;
    if(p1.Equals(p2) &amp;amp;&amp;amp; p1.GetHashCode() == p2.GetHashCode())&lt;br /&gt;
      Console.WriteLine(&amp;quot;P1 and P2 have same state\n&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      Console.WriteLine(&amp;quot;P1 and P2 are DIFFERENT\n&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;P1 and P2 have same state&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Override without &amp;quot;override&amp;quot; keyword==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
public class A&lt;br /&gt;
{&lt;br /&gt;
    public virtual void SomeMethod() {&lt;br /&gt;
        Console.WriteLine( &amp;quot;A::SomeMethod&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class B : A&lt;br /&gt;
{&lt;br /&gt;
    public void SomeMethod() {&lt;br /&gt;
        Console.WriteLine( &amp;quot;B::SomeMethod&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
    static void Main() {&lt;br /&gt;
        B b = new B();&lt;br /&gt;
        A a = b;&lt;br /&gt;
        a.SomeMethod();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;A::SomeMethod&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overriding Virtual Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;class Point2D&lt;br /&gt;
{&lt;br /&gt;
    public int X;&lt;br /&gt;
    public int Y;&lt;br /&gt;
   &lt;br /&gt;
    public virtual void PrintToConsole()&lt;br /&gt;
    {&lt;br /&gt;
        System.Console.WriteLine(&amp;quot;({0}, {1})&amp;quot;, X, Y);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class Point3D : Point2D&lt;br /&gt;
{&lt;br /&gt;
    public int Z;&lt;br /&gt;
   &lt;br /&gt;
    public override void PrintToConsole()&lt;br /&gt;
    {&lt;br /&gt;
        System.Console.WriteLine(&amp;quot;({0}, {1}, {2})&amp;quot;, X, Y, Z);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class MyMainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Point2D My2DPoint = new Point2D();&lt;br /&gt;
        Point3D My3DPoint = new Point3D();&lt;br /&gt;
   &lt;br /&gt;
        My2DPoint.X = 100;&lt;br /&gt;
        My2DPoint.Y = 200;&lt;br /&gt;
   &lt;br /&gt;
        My3DPoint.X = 150;&lt;br /&gt;
        My3DPoint.Y = 250;&lt;br /&gt;
        My3DPoint.Z = 350;&lt;br /&gt;
   &lt;br /&gt;
        My2DPoint.PrintToConsole();&lt;br /&gt;
        My3DPoint.PrintToConsole();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PrintValue() Added to the BaseClass Class==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
   &lt;br /&gt;
public class BaseClass&lt;br /&gt;
{&lt;br /&gt;
    protected int Value;&lt;br /&gt;
   &lt;br /&gt;
    public BaseClass()&lt;br /&gt;
    {&lt;br /&gt;
        Value = 123;&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    public virtual void PrintValue()&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(&amp;quot;Value: &amp;quot; + Value);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
public class DerivedClass : BaseClass&lt;br /&gt;
{&lt;br /&gt;
    public void PrintValue()&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(&amp;quot;Value = &amp;quot; + Value);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        DerivedClass DerivedClassObject = new DerivedClass();&lt;br /&gt;
   &lt;br /&gt;
        DerivedClassObject.PrintValue();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolving Ambiguity with the new Keyword==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
   &lt;br /&gt;
public class BaseClass&lt;br /&gt;
{&lt;br /&gt;
    protected int Value;&lt;br /&gt;
   &lt;br /&gt;
    public BaseClass()&lt;br /&gt;
    {&lt;br /&gt;
        Value = 123;&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    public void PrintValue()&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(&amp;quot;Value: &amp;quot; + Value);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
public class DerivedClass : BaseClass&lt;br /&gt;
{&lt;br /&gt;
    new public void PrintValue()&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(&amp;quot;Value = &amp;quot; + Value);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        DerivedClass DerivedClassObject = new DerivedClass();&lt;br /&gt;
   &lt;br /&gt;
        DerivedClassObject.PrintValue();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolving Ambiguity with the override Modifier==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
   &lt;br /&gt;
public class BaseClass&lt;br /&gt;
{&lt;br /&gt;
    protected int Value;&lt;br /&gt;
   &lt;br /&gt;
    public BaseClass()&lt;br /&gt;
    {&lt;br /&gt;
        Value = 123;&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    public virtual void PrintValue()&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(&amp;quot;Value: &amp;quot; + Value);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
public class DerivedClass : BaseClass&lt;br /&gt;
{&lt;br /&gt;
    override public void PrintValue()&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(&amp;quot;Value = &amp;quot; + Value);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        DerivedClass DerivedClassObject = new DerivedClass();&lt;br /&gt;
   &lt;br /&gt;
        DerivedClassObject.PrintValue();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Three-level Override methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
class BaseClass&lt;br /&gt;
{&lt;br /&gt;
   virtual public void Print(){ &lt;br /&gt;
      Console.WriteLine(&amp;quot;This is the base class.&amp;quot;); &lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
class DerivedClass : BaseClass&lt;br /&gt;
{&lt;br /&gt;
   override public void Print() { &lt;br /&gt;
      Console.WriteLine(&amp;quot;This is the derived class.&amp;quot;); &lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
class SecondDerived : DerivedClass&lt;br /&gt;
{&lt;br /&gt;
   override public void Print()&lt;br /&gt;
   {&lt;br /&gt;
      Console.WriteLine(&amp;quot;This is the second derived class.&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
   static void Main()&lt;br /&gt;
   {&lt;br /&gt;
      SecondDerived derived = new SecondDerived();&lt;br /&gt;
      BaseClass mybc = (BaseClass)derived;&lt;br /&gt;
 &lt;br /&gt;
      derived.Print();&lt;br /&gt;
      mybc.Print();&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;This is the second derived class.&lt;br /&gt;
This is the second derived class.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Virtual and override member function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;class Class1&lt;br /&gt;
    {&lt;br /&gt;
        public virtual void Hello()&lt;br /&gt;
        {&lt;br /&gt;
            System.Console.Write( &amp;quot;Hello from Class1&amp;quot; );&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    class Class2 : Class1&lt;br /&gt;
    {&lt;br /&gt;
        public override void Hello()&lt;br /&gt;
        {&lt;br /&gt;
            base.Hello();&lt;br /&gt;
            System.Console.Write( &amp;quot; and hello from Class2 too&amp;quot; );&lt;br /&gt;
        }&lt;br /&gt;
        public static void Main( string[] args )&lt;br /&gt;
        {&lt;br /&gt;
            Class2 c2 = new Class2();&lt;br /&gt;
            c2.Hello();&lt;br /&gt;
        }&lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Hello from Class1 and hello from Class2 too&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>