namespace AbstractionReptiles
public abstract class Reptile
public Reptile(string name, string species)
public abstract void Move();
public abstract void Eat();
public string Name { get; set; }
public string Species { get; set; }
public class Dinosaur : Reptile
public Dinosaur(string name, string species, string period) : base(name, species)
public override void Move()
Console.WriteLine("Dinosaurs can walk or run.");
public override void Eat()
Console.WriteLine("Dinosaurs hunt and eat.");
public string Period { get; set; }
public class Lizard : Reptile
public Lizard(string name, string species, bool canChangeColor) : base(name, species)
CanChangeColor = canChangeColor;
public override void Move()
Console.WriteLine("Lizards can crawl or climb.");
public override void Eat()
Console.WriteLine("Lizards scavenge for their food.");
public bool CanChangeColor { get; set; }
public class Snake : Reptile
public Snake(string name, string species, bool isVenomous) : base(name, species)
public override void Move()
Console.WriteLine("Snakes can slither.");
public override void Eat()
Console.WriteLine("Snakes hunt prey before swallowing them.");
public bool IsVenomous { get; set; }
static void Main(string[] args)
Dinosaur tRex = new Dinosaur("Tyrannosaurus Rex", "T. rex", "Late Cretaceous");
Lizard chameleon = new Lizard("Panther Chameleon", "Furcifer pardalis", true);
Snake cobra = new Snake("King Cobra", "Ophiophagus hannah", true);
Console.WriteLine("Dinosaur:");
Console.WriteLine($"{tRex.Name} ({tRex.Species}), lived in the {tRex.Period} period.");
Console.WriteLine("Lizard:");
Console.WriteLine($"{chameleon.Name} ({chameleon.Species}), can change color: {chameleon.CanChangeColor}.");
Console.WriteLine("Snake:");
Console.WriteLine($"{cobra.Name} ({cobra.Species}), venomous: {cobra.IsVenomous}.");