抽象与接口
2008-04-15 16:18
134 查看
抽象
什么是抽象,抽象就相当于一个非实体的描述。也就是说抽象不可以实例化,但是可以被继承,抽象类中可以包含实现,但是只要没有实现那么这个类必须规定为抽象类。
在.NET 2.0面向对象编程揭秘 中它是这样被描述的。
抽象中有抽象类,抽象方法,抽象属性。
1、抽象方法
呵呵,我更喜欢先说抽象方法,因为有抽象发放抽象类才能存在,当然不是说所有的抽象类里面都必须有抽象方法。我们尝试先去理解抽象类,至于说为什么这么写我在后面说就是了,那么怎么写呢。抽象方法既然为抽象,那么就不包含任何的实现内容。
普通类里面我们写print方法是这么写的
public void print()
而抽象类中的print方法呢,自然她没有实现,哪么我们就应该这么写
public abstract void print();
我们先不管它到底是为了什么我们先将她这么写就是了。
2、抽象属性
抽象属性和抽象方法的基本原理应该是一致的,都是没有任何实现的。
在普通里面我们这么写我们的一个属性
public string Name
{
get{return name;}
set{name=value;}
}
而在我们的抽象属性中我们不需要包含任何实现,就可以这么写
public abstract string Name
abstract class Fruit //抽象类
class Apple : Fruit //苹果
class Pineapple : Fruit //菠萝
好了 。哪么我们怎么使用这个抽象类中的内容的呢 。这个看下面:
Fruit f;
f = new Apple();
f.Message="Apple";
f.GrowInArea();
f = new Pineapple();
f.Message="Pineapple";
f.GrowInArea();
接口
什么是接口呢。。。我第一次听老师讲解到这个内容的时候也是稀里糊涂的,根本不知道那东西是干嘛的。每个东西的存在都有她的必要性,而我们的接口呢,当时根本没有什么程序要用到接口,也没什么太在意,但是现在程序越来越大的时候,不规范的代码到处都是,就想到有没有什么其他方法,为我们规定比较好的编程方式呢。于是我学习了接口。
现在才理解接口,就是对外提供的模型,你所实现的内容对着这个模型做就好了。
我们首先示例一个简单的接口
public interface Icall
在.net2.0面向对象编程揭秘书中说。接口是一个纯正的抽象类,也就是说,相当与一个抽象类中没有任何实现,她所有的方法都是抽象方法。而我们要实现她的时候就是继承,然后重写,而这里的重写我们不需要添加OVERRIDE关键字,只因为它是接口,就是将方法放在那里给你重写的,你不写还就不行了。(不遵守我的标准就别使用我的接口,就这么简单,是不是很霸道,呵呵,事实就是如此,没有规矩不成方圆么)
那么我们现在来实现这个接口的一个新的类看哈子、
public class mycall:Icall
{
public void call()
{
Console.WriteLine("电话来了,接电话了!");
}
}
而我们怎样去调用这个方法呢 。
mycall m_mycall=new mycall;
m_mycall.call();
这样就可以了。
什么是抽象,抽象就相当于一个非实体的描述。也就是说抽象不可以实例化,但是可以被继承,抽象类中可以包含实现,但是只要没有实现那么这个类必须规定为抽象类。
在.NET 2.0面向对象编程揭秘 中它是这样被描述的。
抽象中有抽象类,抽象方法,抽象属性。
1、抽象方法
呵呵,我更喜欢先说抽象方法,因为有抽象发放抽象类才能存在,当然不是说所有的抽象类里面都必须有抽象方法。我们尝试先去理解抽象类,至于说为什么这么写我在后面说就是了,那么怎么写呢。抽象方法既然为抽象,那么就不包含任何的实现内容。
普通类里面我们写print方法是这么写的
public void print()
而抽象类中的print方法呢,自然她没有实现,哪么我们就应该这么写
public abstract void print();
我们先不管它到底是为了什么我们先将她这么写就是了。
2、抽象属性
抽象属性和抽象方法的基本原理应该是一致的,都是没有任何实现的。
在普通里面我们这么写我们的一个属性
public string Name
{
get{return name;}
set{name=value;}
}
而在我们的抽象属性中我们不需要包含任何实现,就可以这么写
public abstract string Name
abstract class Fruit //抽象类
class Apple : Fruit //苹果
class Pineapple : Fruit //菠萝
好了 。哪么我们怎么使用这个抽象类中的内容的呢 。这个看下面:
Fruit f;
f = new Apple();
f.Message="Apple";
f.GrowInArea();
f = new Pineapple();
f.Message="Pineapple";
f.GrowInArea();
接口
什么是接口呢。。。我第一次听老师讲解到这个内容的时候也是稀里糊涂的,根本不知道那东西是干嘛的。每个东西的存在都有她的必要性,而我们的接口呢,当时根本没有什么程序要用到接口,也没什么太在意,但是现在程序越来越大的时候,不规范的代码到处都是,就想到有没有什么其他方法,为我们规定比较好的编程方式呢。于是我学习了接口。
现在才理解接口,就是对外提供的模型,你所实现的内容对着这个模型做就好了。
我们首先示例一个简单的接口
public interface Icall
在.net2.0面向对象编程揭秘书中说。接口是一个纯正的抽象类,也就是说,相当与一个抽象类中没有任何实现,她所有的方法都是抽象方法。而我们要实现她的时候就是继承,然后重写,而这里的重写我们不需要添加OVERRIDE关键字,只因为它是接口,就是将方法放在那里给你重写的,你不写还就不行了。(不遵守我的标准就别使用我的接口,就这么简单,是不是很霸道,呵呵,事实就是如此,没有规矩不成方圆么)
那么我们现在来实现这个接口的一个新的类看哈子、
public class mycall:Icall
{
public void call()
{
Console.WriteLine("电话来了,接电话了!");
}
}
而我们怎样去调用这个方法呢 。
mycall m_mycall=new mycall;
m_mycall.call();
这样就可以了。
相关文章推荐
- JAVA中的“抽象接口”
- 4.3抽象类abstract和接口interface定义implements实现接口中的抽象方法
- C#中虛函數,抽象,接口的簡單説明
- 感悟2:对接口编程,要学会抽象,对C++而言即学会用指针和引用编程
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- c#基础精华01(强调代码规范,虚方法,抽象方法,接口)
- 抽象和接口
- java之抽象对象和类与接口的区别
- 黑马程序员-JAVA面向对象之抽象、接口、多态
- 疯狂java学习笔记之面向对象(九) - 抽象和接口
- [你必须知道的.NET] 第二回:对抽象编程:接口和抽象类
- 继承、抽象、接口
- 接口、抽象、委托 --------面向对象相关的一些概念
- Spring资源抽象接口Resource
- 接口-抽象,虚方法
- 教你快速高效接入SDK——渠道SDK的接入(就是实现抽象层的接口而已)
- 接口,接口是更加抽象的
- C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
- C#封装、多态、抽象、接口、匿名方法等学习