.net-C#中,子类怎么初始化父类的readonly属性?

问题描述

C#中,子类怎么初始化父类的readonly属性?
class A
{
public readonly int _X;

public A(){     _X=3;}

}

class B:A
{
public B()
{
//Init _X?
}

}

解决方案

不能初始化,readonly只能由构造函数或者字段定义时一次性赋值。如果你希望派生类可以修改/赋值,而类的外部不能修改,可以使用只读属性,写法是:
public int _X { get; private set; }

解决方案二:
A多一个重载版本,可以传参的

class A
{
public readonly int _X;

public A(int x){    _X = x;}public A() { }

}

class B : A
{
public B(int x):base(x) { }

}

B b = new B(12);

解决方案三:
既然定义成readonly为什么还要重新赋值呢?

时间: 2024-08-21 11:59:38

.net-C#中,子类怎么初始化父类的readonly属性?的相关文章

重写-JAVA中子类覆盖了父类的方法,是否还有办法通过子类调用父类同一方法?

问题描述 JAVA中子类覆盖了父类的方法,是否还有办法通过子类调用父类同一方法? JAVA中子类覆盖了父类的方法,是否还有办法通过子类调用父类同一方法? 解决方案 使用super.methodName();调用. Java中super关键字指代的是父类. this关键字指代的是自身. 解决方案二: 用super.方法名调用 解决方案三: 试试super.xxx 解决方案四: 直接用super.方法名调用对应的方法

子类能够继承父类封装的属性吗 谢谢大家

问题描述 子类能够继承父类封装的属性吗在java中 解决方案 解决方案二:能,包括私有...只不过不能访问而已解决方案三:Java语言规范:http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.2Membersofaclassthataredeclaredprivatearenotinheritedbysubclassesofthatclass.Onlymembersofaclassthataredeclaredpro

Python中子类怎样调用父类方法

python中类的初始化方法是__init__(),因此父类子类的初始化方法都是这个,如果子类不实现这个函数,初始化时调用父类的初始化函数,如果子类实现这个函数,就覆盖了父类的这个函数,既然继承父类,就要在这个函数里显式调用一下父类的__init__(),这跟C++,jAVA不一样,他们是自动调用父类初始化函数的. 调用父类函数有以下方法: class A: def method(self, arg): pass class B(A): def method(self, arg): # A.me

继承中子类的属性行为

问题描述 继承中子类的属性行为 继承 子类中是实际存在父类的属性和方法,还是只是能调用,实际没有 解决方案 继承好比说你对父类的代码进行了二次的封装, 类似于将父类的代码copy到自己的代码中,所以是实际存在父类的属性和方法! 解决方案二: java中子类继承了父类的哪些成员Java 中子类继承父类,执行顺序python中单继承和多继承中子类默认继承父类的哪个构造函数__init__

为什么不能在子类的初始化列表里初始化父类的成员

前段时间写了一段代码,其等价形式如下: class A { protected: int n_; }; class B : public A { public: B() : n_(0) {} }; class A { protected :      int n_ ; } ; class B : public A { public :      B ( ) : n_ ( 0 )      { } } ; intellisense会在高亮行提示: "n_" is not a nonsta

PHP中子类重载父类的方法【parent::方法名】_php实例

在PHP中不能定义重名的函数,也包括不能再同一个类中定义重名的方法,所以也就没有方法重载.单在子类中可以定义和父类重名的方法,因为父类的方法已经在子类中存在,这样在子类中就可以把从父类中继承过来的方法重写. 子类中重载父类的方法就是在子类中覆盖从父类中继承过来的方法,父类中的方法被子类继承过来不就可以直接使用吗?为什么还要重载呢?因为有一些情况我们必须要覆盖的.例如,有一个"鸟"类,在这个类中定义了鸟的通用方法"飞翔".将"鸵鸟"类作为它的子类,

静态 非静态 覆盖-java中子类的静态方法能否覆盖父类的静态方法?请大神们帮忙分析下!

问题描述 java中子类的静态方法能否覆盖父类的静态方法?请大神们帮忙分析下! 第一题: class Parent { public void nonStaticMethod() { System.out.println("Parent's Non-Static Method is Called"); } public static void staticMethod() { System.out.println("parent's static method is call

java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法

问题描述 java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法 创建子类对象时,Student s = new Student(""school""); 该构造方法中没有显示调用父类的构造方法,但还是编译成功了,该构造方法调用自身的构造函数,此构造函数中有调用父类的构造方法,执行成功的原因是什么 解决方案 不用显示调用,会自动执行父类的构造 解决方案二: 子类的构造方法中,如果没有显示调用父类的构造方法,会默认调用父类无参的构造方法.类似于

java-Java中子类实例可以调用父类方法吗

问题描述 Java中子类实例可以调用父类方法吗 20C 通常情况子类覆写父类方法如果是构造函数,直接用super()如果是普通方法用super.method() 但是如果创建了子类实例,比如A类中覆写了Object的equals()方法A a = new A();a怎么调用Object的equals()方法 A没有显示继承其他类 解决方案 PHP类中子类调用父类方法java中子类继承父类方法及调用规则java中子类,父类的方法调用及属性值 解决方案二: 因为你A类中重写了equals方法了,所以