Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Arv m.m.

Postades av 2003-10-16 09:02:47 - Fredrik Salomonsson, i forum c# (c-sharp), Tråden har 5 Kommentarer och lästs av 815 personer

Hej.

Försöker mig på objektorientering igen. :-)

Anta att jag skapat ett interface, (Ia). (Insert skall returnera en egendefinierad klass)
<code>
public interface Ia
{
MyClass Insert();
}
</code>

Jag skapar sedan en klass (B) som implementerar Ia

<code>
public class B : Ia
{
public MyClass Insert()
{return new MyClass(1);}
}
</code>

Jag vill sedan ärva klassen B och överlagra "Insert()"

<code>
public class C : B
{
public MyClass Insert()
{return new MyClass(2);}
}
</code>

Detta fungerar men jag får en varning (vågad linje under "B.Insert()"):

"The keyword new is required on 'C.Insert(int)' because it hides inherited member 'B.Insert(int)'" eller liknande. Varför?

Nyckelordet override, vad har det (eller kan ha) för betydelse i detta fall?? Borde jag inte använda detta?
Nån som har lust att förklara?


Svara

Sv: Arv m.m.

Postades av 2003-10-16 09:14:58 - Johan Bovin

Man måste använda override för att man i C# explicit måste tala om att man vet att man överlagrar en metod i en superklass. Om du kolla på Java så fungerar det ju inte så. Det har sina för, och nackdelar tycker jag själv. Fördelen är ju att du, som programmerare, vet när du överlagrar en metod...

Kanske inte mycket till förklaring men iallafall


Svara

Sv: Arv m.m.

Postades av 2003-10-16 10:17:40 - Fredrik Salomonsson

Hej.

OK. Men hur skall jag få med nyckelordet "override" i detta exempel?
Får fel hur jag än gör...


Svara

Sv: Arv m.m.

Postades av 2003-10-16 10:20:21 - Roger Alsing

<code>
public class B : Ia
{
public virtual MyClass Insert()
{return new MyClass(1);}
}
</code>

"virtual" betyder att den metoden KAN overridas i subklasser


<code>
public class C : B
{
public override MyClass Insert()
{return new MyClass(2);}
}
</code>



//Roger


Svara

Sv: Arv m.m.

Postades av 2003-10-16 10:27:55 - Fredrik Salomonsson


Hej igen.

Japp, nu fick jag bort varningen och allt blev tydligare... Tack!

Men nu är frågan... Varför fungerade det att "överlagra" innan... utan att använda nyckelordet "override"??


Svara

Sv: Arv m.m.

Postades av 2003-10-16 11:28:28 - Roger Alsing

det var ingen "överlagring" innan.

du fick bara en ny metod som heter samma sak som metoden i interfacet och basklassen.


testa följande exempel:

<code>
using System;

namespace ConsoleApplication1
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
C var1=new C ();
var1.Insert (); //anropa Insert på var 1

B var2=new B ();
var2.Insert (); //anropa Insert på var 2

Ia var3=var2;
var3.Insert (); //anropa "Ia.Insert" på var2

var3=var1;
var3.Insert (); //anropa "Ia.Insert" på var1
//kolla vad det står i consolen efter denna

Console.ReadLine();
}
}

public class MyClass
{
public MyClass(int i)
{
}
}
public interface Ia
{
MyClass Insert();
}
public class B : Ia
{
public MyClass Insert()
{
Console.WriteLine ("im inside class b insert");
return new MyClass(1);
}
}

public class C : B
{
public MyClass Insert()
{
Console.WriteLine ("im inside class c insert");
return new MyClass(2);
}
}

}
</code>


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 155
27 952
271 704
6 040
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies