<1>隐示实现接口和类都可以访问 显示实现只有接口可以访问。
<2>显示实现益处
1:隐藏代码的实现功能
2:在使用接口访问的系统中,调用者只能通过接口调用而不是底层的类来访问,有利于安全性
综上:当类或结构继承接口时,意味着该类或结构为该接口定义的所有成员提供实现。接口本身不提供类或结构能够以继承基类功能的方式继承的任何功能。基类实现接口,派生类将继承该实现
public class CC_BASIC_CAL : ICC_BASIC_CAL
{
//显示实现接口 隐士实现接口的区别:隐示实现接口和类都可以访问 显示实现只有接口可以访问。
//显示
//double ICC_BASIC_CAL.GetCastSpeed(double length)
//{
// throw new NotImplementedException();
//}
//double ICC_BASIC_CAL.GetLength()
//{
// throw new NotImplementedException();
//}
//List<string> ICC_BASIC_CAL.GetProducsList(string factoryName)
//{
// throw new NotImplementedException();
//}
//=======================================================
//隐士
public double GetCastSpeed(double length)
{
throw new NotImplementedException();
}
public double GetLength()
{
throw new NotImplementedException();
}
public List<string> GetProducsList(string factoryName)
{
throw new NotImplementedException();
}
}
隐示实现接口和类都可以访问
public class test
{
void test1()
{
CC_BASIC_CAL cc = new CC_BASIC_CAL();
cc.GetLength();
ICC_BASIC_CAL cc1 = new CC_BASIC_CAL();
cc1.GetLength();
}
}
显示实现只有接口可以访问。
public class test
{
void test1()
{
CC_BASIC_CAL cc = new CC_BASIC_CAL();
cc.GetLength();//报错,不能访问
ICC_BASIC_CAL cc1 = new CC_BASIC_CAL();
cc1.GetLength();
}
}
另外:
/*
重写和隐藏的定义:
重写:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.
隐藏:基类方法不做申明(默认为非虚方法),在派生类中使用new声明此方法的隐藏。
自己的理解:
比如父类A,有个方法标记为virtual,a(){}子类B继承A,也声明一个方法a(){}
如果B里面的a()使用override,那么访问A的方法时实际上调用了B里面声明的方法,相当于A的方法被覆盖了,new就不是,
访问A的a还是A里面定义的方法,访问B就是B里面定义的方法.
说白了:new是覆盖,新弄了一个,之前的还是可以访问的。,override是重写,“覆盖”并不意味着“删除”,但“重写”意味着“删除”,
这就是“覆盖”和“重载”的区别
隐藏(new)示例:
*/