Razorhawk
Webdesigner und MSP
Ich habe eine abstrakte Klasse geschrieben:
Nun habe ich eine zweite Klasse geschrieben, welche von der da oben erbt und die abtrakten Methoden überschreibt:
Wenn ich nun eine Instanz der Klasse RouterUnit mache, dann habe ich zwar zugriff auf die Properties der abstrakten Klasse jedoch kein Zugriff auf das Property "MyProperty".
Woran liegt das?
Zum anderen bräuchte ich das, da ich mehrere Klassen von der abtrakten erbe und in den darunterliegenen Klassen nunmal einige Properties nicht in alle vorhanden sein sollen und ich somit das nicht einfach in die abstrakte Klasse mit reindefinieren sollte.
Welche Möglichkeiten habe ich?
C#:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
namespace BatchSort.Graphic
{
public abstract class GraphicUnits
{
private Pen _pen;
public Pen Pen
{
get { return _pen; }
set { _pen = value; }
}
private Brush _brush;
public Brush Brush
{
get { return _brush; }
set { _brush = value; }
}
private bool _fVisible = true;
public bool Visible
{
get { return _fVisible; }
set { _fVisible = value; }
}
private Color _fillColor;
public Color FillColor
{
get { return _fillColor; }
set { _fillColor = value; }
}
private Point _location;
public Point Location
{
get { return _location; }
set { _location = value; }
}
private int _blockcount;
public int Blockcount
{
get { return _blockcount; }
set { _blockcount = value; }
}
public GraphicUnits(Pen pen)
{
_pen = pen;
}
public GraphicUnits(Color brush)
{
_brush = new SolidBrush(brush);
_fillColor = brush;
}
public GraphicUnits()
{
}
public abstract void Draw(Graphics g);
public abstract bool Contains(Point pt);
}
}
Nun habe ich eine zweite Klasse geschrieben, welche von der da oben erbt und die abtrakten Methoden überschreibt:
C#:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace BatchSort.Graphic
{
public class RouterUnit : GraphicUnits
{
private int _myProperty
public int MyProperty
{
get { return _myProperty; }
set { _myProperty= value; }
}
private Bitmap image = new Bitmap(@"Images\\batchUnit.gif", true);
public RouterUnit(Point pt) : base()
{
Location = pt;
}
public override void Draw(Graphics g)
{
/* ... irgendein Code ...*/
}
public override bool Contains(Point pt)
{
/* ... irgendein Code ...*/
}
}
}
Woran liegt das?
Zum anderen bräuchte ich das, da ich mehrere Klassen von der abtrakten erbe und in den darunterliegenen Klassen nunmal einige Properties nicht in alle vorhanden sein sollen und ich somit das nicht einfach in die abstrakte Klasse mit reindefinieren sollte.
Welche Möglichkeiten habe ich?
Zuletzt bearbeitet: