c面向对象技术内容摘要:

积,运行结果如图 38所示。 图 38 计算两数的和与积 参考代码: public class Firstclass { protected double n =。 protected double m =。 public void Thearea() { (两数分别是: {0}和 {1}, n, m)。 } protected void Thesum() { (两数和为: {0}, m + n)。 } } public class Secondclass : Firstclass { public void Show() { 14 Secondclass ac = new Secondclass()。 ()。 //在派生类中可以被访问 (两数乘积为: {0}, n * m)。 } } class Program { static void Main(string[] args) { Secondclass sc = new Secondclass()。 ()。 ()。 ()。 } } 这时,如果在主函数中调用 protected声明的方法,如: ()。 //错误,此次调用超过了访问 范围 由于基类中的 Thesum()方法已 声明 为 protected类型,因此,它只能在派生类中被调用,而不能在主函数中被调用。 3. private 计算 图形的面积 ,运行结果 如图 39所示。 图 39计算 图形的面积 参考代码 : public class Shape { 15 private double Numo。 private double Numt。 public double getNumo() { return Numo。 } public double getNumt() { return Numt。 } public void Setnumo(double w) { Numo = w。 } public void Setnumt(double h) { Numt = h。 } } public class Another : Shape { public void area() { (输出图形的面积: {0}, getNumo() * getNumt())。 } } class Program { static void Main(string[] args) { Another aclass = new Another()。 (请输入图形的宽度: )。 double x = (())。 (请输入图形的长度: )。 double y = (())。 (x)。 (y)。 ()。 ()。 } } 在上面的代码中,被声明为 private的成员既不能在派生类中被访问, 也不能在主函数中被访问。 只能通过间接地方式来使用它们。 任务 34 实现多态性 在继承环境中的多态性,一般指同一操作作用于不同类的实例,不同类将进行不同的解释,最后产生不同的执行结果。 多态一般通过重写虚方法来实现。 16 任务 341 重写 虚方法 在基类中的成员可能执行与派生类中同名成员的不同任务,或者派生类中成员必须提供基类中对应抽象成员的实现方式,这种过程称为重写。 当类中的方法声明前加上 virtual 修饰符,我 们 将此方法称为虚方法。 基类中虚方法的实现方式,在派生类中可以通过重 写 来改变。 重写 虚 方法的一般格式: Public class Baseclass { public virtual void show() { } } Public class Derivedclass: Baseclass { public override void show() { } } 现在,我们希望使用基类调用派生类对象方法时,能根据派生类对象自身的类型自动调用其派生类的方法。 参考代码: public class Contact { public virtual string Showmessage() { return This is Contact.。 } } public class CustomerA : Contact { public override string Showmessage() { return This is CustomerA.。 } } public class CustomerB : Contact { public override string Showmessage() { return This is CustomerB.。 } } class Program 17 { static void Main(string[] args) { Contact[] Contacts = new Contact[3]。 Contacts[0] = new Contact()。 ({0}, Contacts[0].Showmessage())。 Contacts[1] = new CustomerA()。 ({0}, Contacts[1].Showmessage())。 Contacts[2] = new CustomerB()。 ({0}, Contacts[2].Showmessage())。 ()。 } } 运行结果如图 310所示。 图 310 重写虚方法 从运行结果可以看到,使用基类调用派生类对象方法时,执行的是重写之后的方法,这样就实现了多态性。 任务 342 使用 new 关键字 如果成员方法使用 new 修饰、那么表示这个成员是“全新”的,即使基类有相同签名的成员方法并说明为 virtual,这个方法也和基类方法相同签名方法没有任何关系。 现在我们把任务 341 代码中的第一个派生类 CustomerA 的 Showmessage() 方法的修饰符改为 new, 代码如下: 18 public class Contact { public virtual string Showmessage() { return This is Contact.。 } } public class CustomerA : Contact { public new string Showmessage() { return This is CustomerA.。 } } public class CustomerB : Contact { public override string Showmessage() { return This is CustomerB.。 } } class Program { static void Main(string[] args) { Contact[] Contacts = new Contact[3]。 Contacts[0] = new Contact()。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。