一、利用抽象类和虚方法实现多态
抽象类主要通过定义抽象方法实现多态,下面比较抽象方法与虚方法的异同点
1. 抽象类
using System;
namespace ShapeApplication
{
abstract class Shape
{
abstract public void area();//抽象方法
}
class circle:Shape
{
public override void area()
{
Console.WriteLine("圆");
}
}
class triangle:Shape
{
public override void area()
{
Console.WriteLine("三角形");
}
}
class square:Shape
{
public override void area()
{
Console.WriteLine("正方形");
}
}
class ExecuteShape
{
static void Main(string[] args)
{
circle r1= new circle();
triangle r2= new triangle();
square r3= new square();
r1.area();
r2.area();
r3.area();
}
}
}
2.虚方法
using System;
namespace ShapeApplication
{
class Shape
{
protected int width,height;
public Shape(int a,int b)
{
width=a;
height=b;
}
public virtual int area()
{
return 0;
}
}
class triangle:Shape
{
public triangle(int a,int b):base(a,b)
{
}
public override int area()
{
Console.WriteLine("三角形面积");
return (width*height/2);
}
}
class ractange:Shape
{
public ractange(int a,int b):base(a,b)
{
}
public override int area()
{
Console.WriteLine("矩形面积");
return (width*height);
}
}
class ExecuteShape
{
static void Main(string[] args)
{
triangle r1= new triangle(10,7);
ractange r2= new ractange(10,5);
Console.WriteLine(r1.area());
Console.WriteLine(r2.area());
}
}
}