标签: overriding

C#可以覆盖派生类的返回类型吗?

class base{
    ....
    public string name();
    ....
}

class deriveda : base{
    ....
    public override string name();
    ....
}

class derivedb : base{
    ....
    public override string name();
    ....
}

class derivedc : base{
    ....
    public override foo name();
    ....
}
Run Code Online (Sandbox Code Playgroud)

在我的大多数派生类中,它是一致的,但其中一个我想返回一个自定义类类型,这可能吗?

c# inheritance overriding

-3
推荐指数
1
解决办法
2590
查看次数

为什么派生类中重写的自动实现属性与C#中的虚基类属性具有不同的值

我有一个'base',它有一个virtual int名为'id' 的自动实现属性.

class bbase
{
    public virtual int id { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

当我从这个类继承到'派生'类时,我得到:

class Derived : bbase
{
    public override int id
    {
        get
        {
            return base.id;
        }
        set
        {
            base.id = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

初始化基类和派生类并将值分配给基类属性后,如下所示:

bbase b2 = new bbase();
Derived d2 = new Derived();
b2.id = 6;
Run Code Online (Sandbox Code Playgroud)

当我尝试从派生类输出值时,它输出'0':

Console.WriteLine(d2.id);
Run Code Online (Sandbox Code Playgroud)

我的困惑是,当我尝试使用虚拟方法的相同方法时,它工作正常.base.method()工作正常的派生类方法.它返回基本方法中的任何内容,但为什么不返回自动实现的属性?

class bbase 
{
    public virtual void execute() { Console.WriteLine("base.execute2"); }
}

class Derived : bbase
{
     public override void execute() …
Run Code Online (Sandbox Code Playgroud)

c# inheritance overriding properties

-3
推荐指数
1
解决办法
105
查看次数

java中如何创建一个类的对象与另一个类的引用变量?

这很好用

class A 
{
    public void f1(int x) {
        System.out.println("F1 of A");
    }   
}

class B extends A
{
    public void f1(int x) {
        System.out.println("F1 of B");
    }
}

public class Overriding {
    public static void main (String[] args) {
        A obj = new B(); //No Error
        obj.f1(7);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这给出了一个错误

class A
{
    public void f1(int x) {
        System.out.println("F1 of A");
    }
}

class B extends A
{
    public void f1(int x) {
        System.out.println("F1 of B");
    }
}

public …
Run Code Online (Sandbox Code Playgroud)

java oop overriding

-4
推荐指数
1
解决办法
2967
查看次数

覆盖Java中的Equals方法

基本上,我必须重写对象Employee的equals方法。

我试过了

public boolean equals( Object b ){
   if (this == b) return true; 
   if ( ! (b instanceof Employee) )
      return false;
   final other=(Employee)b;
   return getID()==other.getID();
}
Run Code Online (Sandbox Code Playgroud)

但收到一个错误:

Employee.java:28: error: <identifier> expected 

   final other=(Employee)b; 
Run Code Online (Sandbox Code Playgroud)
public boolean equals( Object b ) 
{ 
  if ( ! (b instanceof Employee) ) 
    return false; 
Run Code Online (Sandbox Code Playgroud)

java overriding

-4
推荐指数
1
解决办法
54
查看次数

运算符的显式和隐式(int)

public static explicit operator int(Author a)
    {
        return a.Publications.Length;
    }
    public static implicit operator int(Author a)
    {
        return a.Publications.Length;
    }
Run Code Online (Sandbox Code Playgroud)

为什么我不这样做?我的老师让我覆盖了Author类的operator int的隐式和显式转换.+我可以得到深拷贝的解释:D?

c# overriding explicit implicit

-5
推荐指数
1
解决办法
380
查看次数

什么需要覆盖 String 类中的 equals 方法?

问这个问题的原因是Java中的String是实习的所以

String s1 = "Hello";

String s2 = "Hello";
Run Code Online (Sandbox Code Playgroud)

s1 和 s2 都指向内存中的同一个对象。不会创建两个不同的对象。

s1.equals(s2)应该返回 true 并且确实如此。现在在java文档中它说String类覆盖了对象类的equals方法。但真的吗?

因为即使 String 类没有覆盖 Object.equals(),equals 方法的输出也会保持不变。

如果它确实覆盖了,为什么需要它?

java string overriding equals

-5
推荐指数
1
解决办法
3596
查看次数

标签 统计

overriding ×6

c# ×3

java ×3

inheritance ×2

equals ×1

explicit ×1

implicit ×1

oop ×1

properties ×1

string ×1