c#如何在父类(或是接口)当中定义一个子类必须要重写的字段(属性)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#如何在父类(或是接口)当中定义一个子类必须要重写的字段(属性)?相关的知识,希望对你有一定的参考价值。
抽象父类中:public absctrat string 属性名 get;set;
接口中:
string 属性名 get;set;
=======
以上示例是string类型的属性,可按你的情况修改类型.
以上示例中的属性都是可读可写属性.
如果是只读属性,就应该修改为:
抽象父类中:
public absctrat string 属性名 get;
接口中:
string 属性名 get;
=============
如果是只写属性,就应该修改为:
抽象父类中:
public absctrat string 属性名 set;
接口中:
string 属性名 set;
===========
不存在不可读又不可写的属性. 参考技术A 据我所知,
可以在抽象类或接口定义没有方法实现的方法,而方法中可以定义参数,这种参数是一种要重写的,但是名称可以不同。。
没有听过可以定义必须重写的字段。。
你听过,告诉咯。。 参考技术B 用接口,定义代码如下:
public interface Father
string Abc
get;
set;
在子类中必须重写Abc属性。 参考技术C 定义抽象类,并在抽象类中定义抽象方法abstract
虚方法是不必须重写的(在派生类中)
而抽象方法在派生类中必须被重写
public abstract class AB
public abstract void A();
public abstract void B();
public class C : AB
public override void A()
//DO SOMETHING;
如果这样的话编译器会出错,因为B方法没有被重写!
看楼下的吧,我又看错题目了! 参考技术D 父类定义成抽象类abstract
public abstract string YY
get;
set;
接口
string YY
get;
set;
属性在C#其实只是一种特殊的方法而已
完全可用方法代替。
如何理解“子类不能降低父类中定义的方法的可访问性”这句话?
如果一个方法在父类定义为public,在子类中必须也定义为public。
如果一个方法在父类定义为public,“在子类中定义为protected”是如何降低父类中定义的方法的可访问性从而不被允许的?麻烦举个例子。谢谢!
public,private,protected以及暗示性的friendly。若未明确指定其他关键字,则默认为后者。这些关键字的使用和含义都是相当直观的,它们决定了谁能使用后续的定义内容。“public”(公共)意味着后续的定义任何人均可使用。而在另一方面,“private”(私有)意味着除您自己、类型的创建者以及那个类型的内部函数成员,其他任何人都不能访问后续的定义信息。private在您与客户程序员之间竖起了一堵墙。若有人试图访问私有成员,就会得到一个编译期错误。“friendly”(友好的)涉及“包装”或“封装”(Package)的概念——即Java用来构建库的方法。若某样东西是“友好的”,意味着它只能在这个包装的范围内使用(所以这一访问级别有时也叫作“包装访问”)。“protected”(受保护的)与“private”相似,只是一个继承的类可访问受保护的成员,但不能访问私有成员。 参考技术A 父类:FatherClass
public void speak
//xxx
子类:SonClass
private void speak
//xxx
调用:
FatherClass fc = new SonClass();
fc.speak();
由于多态性,fc.speak()实际上调用的是子类的方法,父类不能访问子类方法,肯定会报错
=======可能理解有误追问
可不可以这样理解?在FatherClass和SonClass存在继承关系的情况下,SonClass的speak()覆盖了父类的方法,而在SonClass的speak()访问修饰符为private的情况之下,SonClass的子类便继承不了speak(),那么在继承链上从SonClass的子类开始一直往下的类都无法继承speak(),这和继承规则有矛盾,所以,这样不被允许。
可对?有劳指教……
嗯,可以
本回答被提问者采纳 参考技术B 这主要是子类中覆盖父类的方法时,应注意的问题。如父类有一个说话的方法public void speak(){System.out.println(“aaa”);},继承他的子类中想重写该方法,则定义public void speak()System.out.println(“bbb”);,这时,该方法不能声明为private或protected或默认的。追问假如父类方法为public,子类为private或protected的话,子类方法是如何导致降低父类中定义的方法的可访问性的?可否举个例子?(假设子类方法可以降低父类方法的可访问性)
以上是关于c#如何在父类(或是接口)当中定义一个子类必须要重写的字段(属性)?的主要内容,如果未能解决你的问题,请参考以下文章