相关疑难解决方法(0)

带接口的多重继承歧义

我们都知道有关多重遗传的钻石问题 -

   A
  / \
 B   C
  \ / 
   D
Run Code Online (Sandbox Code Playgroud)

这个问题描述了课堂的模糊情况D.如果类A有一个方法,并且/ B和/或C覆盖方法,那么哪个版本的方法会D覆盖?

这个问题是否也适用于Java中的接口?如果没有,Java接口如何克服这个问题?

java oop inheritance interface diamond-problem

23
推荐指数
2
解决办法
9825
查看次数

如何从Java中继承多个基类?

可能重复:
在Java中作弊单继承!!
为什么Java或C#中不允许多重继承?
java中的多重继承.

我知道我们可以使用接口从多个类继承,但是也可以继承状态吗?
如何从2个类继承定义方法并将它们放在Java的第三个类中?

java multiple-inheritance

16
推荐指数
2
解决办法
5万
查看次数

在C#中,为什么数组上的Equals()方法只比较它们的引用,而不是它们的实际内容

C#,为什么Equals()方法总是arrays通过比较引用而不是通过比较内容来检查两者之间的相等?

因此,调用Equals()其实现的所有方法(很多)都不能像数组那样工作(它不会比较内容):

示例:

int[] array1 = new[] {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] array2 = new[] {1, 2, 3, 4, 5, 6, 7, 8, 9};

var u = array1.Equals(array1);                                       //true
var v = array1.Equals(array2);                                       //false
var w = Array.Equals(array1, array2);                                //false
var x = (new List<int[]>(new int[][] { array1 })).Contains(array2);  //false
var y = (new int[][] { array1 }).Any(x => x == array2);              //false
var z = (new …
Run Code Online (Sandbox Code Playgroud)

c# arrays equality reference

9
推荐指数
1
解决办法
7084
查看次数

c#多重继承

我想在C#中实现这一点

(伪代码)

class A;

class B : A;

class C : A, B;

...

A ac = (A)c;

...

B bc = (B)c;
Run Code Online (Sandbox Code Playgroud)

这可能吗?

c# multiple-inheritance

7
推荐指数
2
解决办法
2994
查看次数

为什么java不支持多重继承

可能重复:
为什么Java中没有多重继承,但允许实现多个接口

大家好,我是java的新手,当我尝试在java中使用多继承概念时,它显示编译时错误.为什么java不支持它.我听说过关键字但是不知道为什么java直接支持它.请帮我解释一下.

java

6
推荐指数
2
解决办法
4万
查看次数

Java中抽象和多态的优点

我正在阅读Java中的抽象概念.

这些是我的理解:

  1. 抽象是一种呈现函数签名和隐藏实现的方法,将其留给可以实现/扩展接口/抽象类的用户.
  2. 通过这种方式,我们可以实现更少的代码修改范围,可重用性.
  3. 我们可以将对象实时与程序代码中的对象紧密关联.

这些是我的问题:

  1. 当抽象类在所有方法都是抽象的时候可以像接口一样运行时,为什么我们需要单独使用接口?请用一个例子来解释,以便更好地理解.

  2. 我们可以在功能的基础上调用Abstract class = Interface + Inheritance吗?因为我们可以与Abstract类一起实现接口和继承的功能.

java oop abstraction interface

6
推荐指数
1
解决办法
6283
查看次数

扩展层次结构的具体基类

假设我使用的库提供了以下形状:

class Shape
class Circle extends Shape
class Square extends Shape
Run Code Online (Sandbox Code Playgroud)

但我想介绍红色形状的概念.我无法修改库但我可以创建:

class RedShape extends Shape
Run Code Online (Sandbox Code Playgroud)

然而,这不能轻易扩展到RedCircle因为它不能同时延伸RedShapeCircle.

我不认为装饰器模式在这里工作得很好但是有没有实现这个的技术?

java oop

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

为什么Java类只能扩展一个类但实现了许多接口?

在C++中,您可以扩展许多类,那么这个Java设计的优点是什么类只能扩展一个类?由于接口是一种纯类(实际上是抽象类),为什么不像类扩展一样限制接口的实现数量呢?

java multiple-inheritance

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

C#是否支持多继承4.0?

我最近参加了一次练习C#技能测试,其中一个问题是,

C#是否支持多重继承?

我回答是的,并且被标记为错误.经过一些在线研究后,它充满了为什么不支持它的答案:

C#中的多重继承支持

为什么Java或C#中不允许多重继承?

http://www.codeproject.com/Questions/652495/Why-does-csharp-doesnt-support-Multiple-inheritanc

然后我去尝试复制我尝试从已经从基类继承的类继承时应该得到的错误,并且没有错误.我正在使用控制台应用程序,我最近升级到.net 4.5,也许事情发生了变化?

我测试的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {

            Leo bk = new Leo();

            bk.avgWords();

            Console.ReadLine();

        }

        public void bubbleSort(int[] input)
        {

        }

        public void insertionSort(int[] input)
        {

        }
    }

    public class Gatsby : Books
    {


        public override void avgWords()
        {

            Console.WriteLine(5);

        }

    }

    public class Leo : Gatsby
    {


        public override void avgWords()
        {
            Console.WriteLine(7);
        } …
Run Code Online (Sandbox Code Playgroud)

c# inheritance

2
推荐指数
2
解决办法
6590
查看次数

抽象类和多重继承

我们可以通过使用抽象类来实现与接口相同的功能,那么为什么java不允许以下代码呢?

abstract class Animals
{
    public abstract void run();
}

abstract class Animals1
{
    public abstract void run1();
}

class Dog extends Animals,Animals1
{
  public void run() {System.out.println("Run method");}
  public void run1() {System.out.println("Run1 method");}
}
Run Code Online (Sandbox Code Playgroud)

我知道只使用接口可以实现多重继承,但上面的代码与接口完成的工作相同.

java abstract-class interface multiple-inheritance

1
推荐指数
1
解决办法
2万
查看次数

如何通过接口进行多重继承?

可能重复:
为什么Java或C#中不允许多重继承?

问题: C#是否支持多重继承?

答:是的,使用界面.

现在我的问题:如果我们继承一个接口,那么我们必须实现它.所以我们正在编写自己的代码然后我们如何使用继承的核心概念,即继承接口的可重用性.

因此,通过接口进行多重继承没用的.如果我错了,那么通过接口进行多重继承有用吗?

c# oop

0
推荐指数
1
解决办法
227
查看次数