C# abstract的一点理解
2017-10-02 10:52
218 查看
首先我先试运行了微软给的示例程序:
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
int side = 0;
public Square(int n)
{
side = n;
}
// Area method is required to avoid
// a compile-time error.
public override int Area()
{
return side * side;
}
static void Main()
{
Square sq = new Square(12);
Console.WriteLine("Area of the square = {0}", sq.Area());
}
interface I
{
void M();
}
abstract class C : I
{
public abstract void M();
}
}
// Output: Area of the square = 144
然后改为已经学过的简单形式:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp5
{
//abstract class ShapesClass
//{
// abstract public int Area();
//}
class Square //: ShapesClass
{
int side = 0;
public Square(int n)
{
side = n;
}
// Area method is required to avoid
// a compile-time error.
//public override int Area()
public int Area()
{
return side * side;
}
static void Main()
{
Square sq = new Square(12);
Console.WriteLine("Area of the square = {0}", sq.Area());
Console.ReadKey();
}
interface I
{
void M();
}
abstract class C : I
{
public abstract void M();
}
}
}
// Output: Area of the square = 144可以看出,两者结果是相同的,也就是说abstract类并没有实际上创新类的运行方式,只是进行改进方便某一方面的编程。
微软官方给的解释是:抽象类的用途是提供一个可供多个派生类共享的通用基类定义。 例如,类库可以定义一个抽象类,将其用作多个类库函数的参数,并要求使用该库的程序员通过创建派生类来提供自己的类实现。
http://www.cnblogs.com/acetaohai123/p/7619779.html
附上一篇相关博客。
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
int side = 0;
public Square(int n)
{
side = n;
}
// Area method is required to avoid
// a compile-time error.
public override int Area()
{
return side * side;
}
static void Main()
{
Square sq = new Square(12);
Console.WriteLine("Area of the square = {0}", sq.Area());
}
interface I
{
void M();
}
abstract class C : I
{
public abstract void M();
}
}
// Output: Area of the square = 144
然后改为已经学过的简单形式:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp5
{
//abstract class ShapesClass
//{
// abstract public int Area();
//}
class Square //: ShapesClass
{
int side = 0;
public Square(int n)
{
side = n;
}
// Area method is required to avoid
// a compile-time error.
//public override int Area()
public int Area()
{
return side * side;
}
static void Main()
{
Square sq = new Square(12);
Console.WriteLine("Area of the square = {0}", sq.Area());
Console.ReadKey();
}
interface I
{
void M();
}
abstract class C : I
{
public abstract void M();
}
}
}
// Output: Area of the square = 144可以看出,两者结果是相同的,也就是说abstract类并没有实际上创新类的运行方式,只是进行改进方便某一方面的编程。
微软官方给的解释是:抽象类的用途是提供一个可供多个派生类共享的通用基类定义。 例如,类库可以定义一个抽象类,将其用作多个类库函数的参数,并要求使用该库的程序员通过创建派生类来提供自己的类实现。
http://www.cnblogs.com/acetaohai123/p/7619779.html
附上一篇相关博客。
相关文章推荐
- 关于C#中Thread.Join()的一点理解
- 关于C#里面socket编程的一点理解
- 关于C#中Thread.Join()的一点理解
- c# 构造器的一点理解(2)
- 关于C#中Thread.Join()的一点理解
- 关于C#里面socket编程的一点理解
- 关于C#中Thread.Join()的一点理解
- 深入理解C# abstract和virtual关键字
- 【转载】关于C#中Thread.Join()的一点理解
- C# 理解 abstract、virtual、override
- C#中的Abstract、Virtual、Interface理解
- 关于C#中Thread.Join()的一点理解
- 关于C#中Thread.Join()的一点理解
- 我理解c#中的interface abstract virtual override和new(转)
- C#观察者模式的实现的一点理解。
- C#中List或其它集合对象排序方法的一点理解
- C#中foreach的一点理解
- C# 委托与事件的一点理解(1)
- 关于C#中Thread.Join()的一点理解