1、抽象方法與抽象類的聲明
1)抽象類和抽象方法聲明必須包含abstract
2)抽象方法的聲明沒有方法體:public abstract void fly();
3)抽象類和抽象法前加上public,不加默認會是private。
4)抽象類的聲明就是為了派生和繼承,標記為sealed,是不可以繼承的。
5)抽象類不能實例化,也就是不能用new、sealed,必須通過繼承由派生類實現其抽象方法
6)抽象類可以包含非抽象方法
7)筆記原文:
Program.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//抽象類加abstract
//public abstract Fky(){}//默認是private
//public abstract void fly();抽象方法聲明沒有方法體
//抽象類和抽象方法多的聲明必須包含abstract
//抽象類的聲明就是為了派生和繼承,如果標記為sealed,不可以繼承了
//抽象類不能實例化,必須通過繼承由派生類實現其抽象方法,因此不能用new、sealed
//抽象類中可以包含非抽象方法
namespace 抽象類與抽象方法
{
class Program
{
static void Main(string[] args)
{
}
}
}
2、抽象類與抽象實例
Pow.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 抽象類和抽象法實例
{
public abstract class Pow
{
public abstract void PowMehod(int x,int y);
}
}
Pow1.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 抽象類和抽象法實例
{
class Pow1:Pow
{
public override void PowMehod(int x,int y)
{
int pow = 1;
for (int i = 1; i <= y; i++)
{
pow *= x;
}
Console.WriteLine("求冪的結果是:"+pow);
}
}
}
Pow2.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 抽象類和抽象法實例
{
class Pow2:Pow
{
public override void PowMehod(int x, int y)
{
Console.WriteLine("求冪的結果:"+System.Math.Pow(x,y));
}
}
}
Program.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 抽象類和抽象法實例
{
class Program
{
static void Main(string[] args)
{
//Pow pow = new Pow();抽象類不可以實例化
Pow1 pow1 = new Pow1();
pow1.PowMehod(2,10);
Pow2 pow2 = new Pow2();
pow2.PowMehod(2,10);
Console.ReadKey();
//abstract方法:沒有自己的實現。
//virtual方法
//共同點:都可以通過overrid來實現對原來的方法的重寫
}
}
}