12 个解决方案
#1
接口主要是对行为的抽象
抽象类主要是对类的抽象
抽象类主要是对类的抽象
#3
帮顶
#4
抽象的类里面可以包括部分具体实现,而接口则不行。
如上面的例子,在抽象类中,实际包括了:几处具体的实现,二个属性,一个求和方法。
同时对于接口来说,根本就无法定义字段成员,也就是private int x,private int y;它是无法定义的。
public abstract class AClass
{
private int x;
private int y;
public int X { get { return x; } }
public int Y { get { return y; } }
public float Sum() { return X + Y; }
public abstract float Average();
}
public class BClass : AClass
{
public override float Average()
{
return Sum() / 2;
}
}
如上面的例子,在抽象类中,实际包括了:几处具体的实现,二个属性,一个求和方法。
同时对于接口来说,根本就无法定义字段成员,也就是private int x,private int y;它是无法定义的。
#5
对于接口实现同样的功能,你只能做到:
你无法提供Sum的任何功能,但反过来说。
public interface A
{
public int X{get;}
public int Y{get;}
public float Sum();
}
你无法提供Sum的任何功能,但反过来说。
#6
楼主这问题太深了,谈不来了。太多了
#7
前几天去面试就遇到这些问题
#8
抽象类中可以有自己的属性和方法,而接口不行。
如果哪个类继承了这个接口,那么就要在这个类中实现这个接口
#9
抽象类主要面向属性 也就是定义一些属性由继承后的子类重写(同时也可获得抽象类中的实现了的方法)
接口主要面向方法 也可以把接口理解成一种规范,接口定义好规范 让实现它的类对他扩展和实现
当然这只是我的个人理解。
仅供参考!
接口主要面向方法 也可以把接口理解成一种规范,接口定义好规范 让实现它的类对他扩展和实现
当然这只是我的个人理解。
仅供参考!
#10
我也是说说:
在以下情况中使用委托:
当使用事件设计模式时。
当封装静态方法可取时。
当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。
需要方便的组合。
当类可能需要该方法的多个实现时。
在以下情况中使用接口:
当存在一组可能被调用的相关方法时。
当类只需要方法的单个实现时。
当使用接口的类想要将该接口强制转换为其他接口或类类型时。
当正在实现的方法链接到类的类型或标识时:例如比较方法。
在以下情况中使用委托:
当使用事件设计模式时。
当封装静态方法可取时。
当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。
需要方便的组合。
当类可能需要该方法的多个实现时。
在以下情况中使用接口:
当存在一组可能被调用的相关方法时。
当类只需要方法的单个实现时。
当使用接口的类想要将该接口强制转换为其他接口或类类型时。
当正在实现的方法链接到类的类型或标识时:例如比较方法。
#11
好象接口中没有方法的具体实现,只能定义了一个名字的
不能给点继续给点代码说明下,谢谢!
不能给点继续给点代码说明下,谢谢!
#12
4 和 8 楼的简单易懂!如果生深层次的要自己不多摸索!
#1
接口主要是对行为的抽象
抽象类主要是对类的抽象
抽象类主要是对类的抽象
#2
本文尝试用自己的理解来阐述一下接口和抽象类的相同点和不同点。
http://blog.csdn.net/zhoufoxcn/archive/2007/04/06/1554041.aspx
http://blog.csdn.net/zhoufoxcn/archive/2007/04/06/1554041.aspx
#3
帮顶
#4
抽象的类里面可以包括部分具体实现,而接口则不行。
如上面的例子,在抽象类中,实际包括了:几处具体的实现,二个属性,一个求和方法。
同时对于接口来说,根本就无法定义字段成员,也就是private int x,private int y;它是无法定义的。
public abstract class AClass
{
private int x;
private int y;
public int X { get { return x; } }
public int Y { get { return y; } }
public float Sum() { return X + Y; }
public abstract float Average();
}
public class BClass : AClass
{
public override float Average()
{
return Sum() / 2;
}
}
如上面的例子,在抽象类中,实际包括了:几处具体的实现,二个属性,一个求和方法。
同时对于接口来说,根本就无法定义字段成员,也就是private int x,private int y;它是无法定义的。
#5
对于接口实现同样的功能,你只能做到:
你无法提供Sum的任何功能,但反过来说。
public interface A
{
public int X{get;}
public int Y{get;}
public float Sum();
}
你无法提供Sum的任何功能,但反过来说。
#6
楼主这问题太深了,谈不来了。太多了
#7
前几天去面试就遇到这些问题
#8
抽象类中可以有自己的属性和方法,而接口不行。
如果哪个类继承了这个接口,那么就要在这个类中实现这个接口
#9
抽象类主要面向属性 也就是定义一些属性由继承后的子类重写(同时也可获得抽象类中的实现了的方法)
接口主要面向方法 也可以把接口理解成一种规范,接口定义好规范 让实现它的类对他扩展和实现
当然这只是我的个人理解。
仅供参考!
接口主要面向方法 也可以把接口理解成一种规范,接口定义好规范 让实现它的类对他扩展和实现
当然这只是我的个人理解。
仅供参考!
#10
我也是说说:
在以下情况中使用委托:
当使用事件设计模式时。
当封装静态方法可取时。
当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。
需要方便的组合。
当类可能需要该方法的多个实现时。
在以下情况中使用接口:
当存在一组可能被调用的相关方法时。
当类只需要方法的单个实现时。
当使用接口的类想要将该接口强制转换为其他接口或类类型时。
当正在实现的方法链接到类的类型或标识时:例如比较方法。
在以下情况中使用委托:
当使用事件设计模式时。
当封装静态方法可取时。
当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。
需要方便的组合。
当类可能需要该方法的多个实现时。
在以下情况中使用接口:
当存在一组可能被调用的相关方法时。
当类只需要方法的单个实现时。
当使用接口的类想要将该接口强制转换为其他接口或类类型时。
当正在实现的方法链接到类的类型或标识时:例如比较方法。
#11
好象接口中没有方法的具体实现,只能定义了一个名字的
不能给点继续给点代码说明下,谢谢!
不能给点继续给点代码说明下,谢谢!
#12
4 和 8 楼的简单易懂!如果生深层次的要自己不多摸索!