继承之抽象类和接口

Posted on 2007-06-21 10:21  Viviwei  阅读(322)  评论(0)    收藏  举报
1。从类的层次结构上看,抽象类通常是在层次的顶端,但在实际的设计实践当中,抽象类应当是最后出现的。为什么?实际上抽象类的获取有点像数学中的提取公因式:ax+bx+cx,x就是抽象类,如果你没有前面的式子,你怎么知道x是不是公因式呢?在这点上,也符合人们认识世界的过程,先具体后抽象。因此在设计过程中如果你得到大量的具体概念并从当中找到其共性时,这个共性的集合就是抽象类应当是没错的。
从使用角度来看,抽象类就是将某个函数做为公因式,提取出来使用,一般这种方法适合与封装前的集合.
在使用过程中我觉得最TM无聊的是他们都不能实例化,所以使用时需要先要给予对象初值
例如,我下面给出几个类,他们都有一个公共的方法:
类a
 1public class a{
 2    public a()
 3    {
 4        //
 5        // TODO: 在此处添加构造函数逻辑
 6        //
 7    }

 8    private string ab,bc,d;
 9    public void dd(String A,String B,string D)
10    {
11ab = A;
12bc = B;
13        d = D;
14    }

15    public string reback()
16    {
17        string i = ab + bc + d;
18        return i;
19    }

20}

类b
 1public class b
 2{
 3    public b()
 4    {
 5        //
 6        // TODO: 在此处添加构造函数逻辑
 7        //
 8    }

 9    private string ab,bc,c;
10    public void cc(string A,string B,string C)
11{
12ab = A;
13bc = B;
14    c = C;
15}

16    public string reback()
17    {
18        string i = ab + bc + c;
19        return i;
20    }

21}
很明显的,类a与类b 中有公共的方法
我们可以提取出来进行处理.也就是说我们可以为它加一个抽象类 abs
public abstract class abs
{
   
public string ab, bc;
    
public void aabs(string A, string B)
    
{
        ab 
= A;
        bc 
= B;
    }

    
public abstract string reback();
}


注意,这里的抽象类没有构造函数....这里的reback()是一个抽象方法..里面没有任何的内容

这样我们就完成了一个抽象的类,
在前台我们可以调用这个类

      a a = new a();
        abs abs
=a;
        abs.aabs(
"""");
        a.dd(
"Viviwei");
       
this.Msg.Text = abs.reback();


 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3