相关疑难解决方法(0)

带有重载的Java函数调用

我想知道为什么第三个输出不是b.

这是我的代码:

public class SimpleTests {
    public void func(A a) {
        System.out.println("Hi A");
    }
    public void func(B b) {
        System.out.println("Hi B");
    }
    public static void main(String[] args) {
        A a = new A();
        B b = new B();
        A c = new B();
        SimpleTests i = new SimpleTests();
        i.func(a);
        i.func(b);
        i.func(c);
    }
}
class A {}
class B extends A {}
Run Code Online (Sandbox Code Playgroud)

这是输出:

Hi A
Hi B
Hi A
Run Code Online (Sandbox Code Playgroud)

有人能告诉我为什么第三个输出是Hi A,不是Hi B.因为真实的c是B的一个实例.

java overloading

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

抽象类有什么意义?

我理解OOP范例中的抽象类是什么.是的抽象类是不完整的类型,无法实例化.

抽象类的子类可以扩展超类等,并通过使用基类型变量调用方法.但这是我没有得到的.

我正在读这本书,作者说使用Superclass变量来引用子类并调用一个公共方法调用正确的方法.是的,这是真的.例如我写的这个小代码:

public class ObjectOne extends SuperObject {

    public String objectString()
    {
        return "objectString() of class ObjectOne\n" ;
    }
}



public class ObjectTwo extends SuperObject {

    public String objectString()
    {
        return "objectString() of class ObjectTwo\n" ;
    }
}


public class ObjectThree extends SuperObject {

    public String objectString()
    {
        return "objectString() of class ObjectThree\n" ;
    }
}


public class SuperObject {
    public String objectString()
    {
        return "SuperObject" ;      
    }
}

    import static java.lang.System.out ;
public class ControlClass { …
Run Code Online (Sandbox Code Playgroud)

java

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

返回ArrayList或List?

我正在创建一个供人们使用的库,但为什么我的方法应该返回List而不是ArrayList

因为如果用户知道真实类型是一个ArrayList,他将在循环中使用accessor []而不是迭代器,但如果他不知道他将使用迭代器.

对于LinkedList的相同问题,如果返回类型是List,则他将无法使用正确的访问者.

我对吗?

java optimization list

12
推荐指数
3
解决办法
4809
查看次数

双打的Java ArrayList

有没有办法ArrayListdouble类型定义?我试过了两个

ArrayList list = new ArrayList<Double>(1.38, 2.56, 4.3);
Run Code Online (Sandbox Code Playgroud)

ArrayList list = new ArrayList<double>(1.38, 2.56, 4.3);
Run Code Online (Sandbox Code Playgroud)

第一个代码显示构造函数ArrayList<Double>(double, double, double)未定义,第二个代码显示后面需要维度double.

java double arraylist

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

C# - 系统地添加一个接口是一个好习惯吗?

在我正在研究的项目中,我注意到每个实体类都有一个接口.似乎最初的动机是仅将接口暴露给其他项目/解决方案.

我发现这完全没用,我没有看到为每个类创建一个接口的重点.顺便说一下,这些类没有任何方法只是属性,并且它们没有实现相同的接口.

我错了吗?或者这是一个好习惯?

谢谢

c# interface

10
推荐指数
3
解决办法
592
查看次数

对JAVA界面感到困惑

可能重复:
"编程到接口"是什么意思?
接口与抽象类(通用OO)

我是新手学习JAVA,现在我对界面感到困惑.我搜索并阅读了很多材料,但仍然不清楚.

当我试图找到有关接口的一些信息时,我看到许多人谈到了接口和抽象类之间的关系.但我甚至不知道为什么他们会对比这两者.因为我认为抽象类用于告诉其他人你无法创建这个抽象类的对象,如果需要,你必须修改抽象类.这是关于继承的事情,对吧?

但我不知道界面的含义.有一个interface a,如果class B要实现接口a,它必须使用保留字class B implements a,然后完成接口所需的所有方法.但我的问题是,如果B类必须自己完成所有方法,接口的含义是什么?我想我们不需要它.我不太了解它.我读了很多句子:"界面可以反映面向对象语言的核心思想","界面可以帮助使程序更容易"等等.但我无法理解其含义.

那么,有没有人可以向我展示一些让我们理解界面的例子?或者你可以告诉我一些有用的链接或清楚描述界面的书籍.我真的希望弄明白.谢谢!

java interface

10
推荐指数
1
解决办法
1612
查看次数

Java中的HashMap.values()方法返回的集合是什么?

Java SE 6.0 API表示values()方法java.util.HashMap返回一个Collection类型.JVM如何确定在运行时返回哪个集合.它是jvm特定的还是Java遵循的任何一般准则.我浏览了源代码,HashMap但无法得到线索.任何帮助都非常感谢,或者如果问题很蹩脚,请指出我为什么.谢谢.

java hashmap

10
推荐指数
1
解决办法
3462
查看次数

java中的多态性:为什么我们设置对子对象的父引用?

我想了解设置父对象的用例的用例.示例:Dog类扩展了Animal类.(没有接口,请注意)我通常会像这样创建一个Dog的对象:

Dog obj = new Dog();
Run Code Online (Sandbox Code Playgroud)

现在,由于Dog是Animal的一个子类,因此它已经可以访问Animal的所有方法和变量.那么,这有什么不同:

Animal obj = new Dog(); 
Run Code Online (Sandbox Code Playgroud)

请提供正确的用例及其使用的代码段.请不要有关于'多态性'或'编码接口'的理论文章!

码:

public class Polymorphism {
    public static void main(String[] args){
        Animal obj1 = new Dog();
        Dog obj2 = new Dog();
        obj1.shout(); //output is bark..
        obj2.shout(); //output is bark..        
    }   
}

class Animal{
    public void shout(){
        System.out.println("Parent animal's shout");
    }       
}

class Dog extends Animal{
    public void shout(){
        System.out.println("bark..");
    }
}

class Lion extends Animal{
    public void shout(){
        System.out.println("roar..");
    }
}

class Horse extends Animal{
    public void shout(){ …
Run Code Online (Sandbox Code Playgroud)

java oop polymorphism

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

访客和策略模式之间有什么区别?

我已经学会了这两种模式但却不理解这两种模式之间的差异.

我不知道场景,何时何地使用这些模式.

任何人都可以解释差异和用例吗?

java design-patterns strategy-pattern visitor-pattern

9
推荐指数
3
解决办法
3950
查看次数

依赖性反转和分离的接口模式(或一般的接口代码)之间有什么区别?

我无法弄清楚依赖性反转原理(SOLID原则之一)与通用"代码到接口"或分离接口模式之间的区别.他们都提倡创建一个抽象层来分离较低级别和较高级别的模块.

DI原则设想创建在更高层和更低层模块之间交互的接口,但也坚持接口必须是更高层包的一部分.
为什么这应该是更高层次而不是更低层次的一部分?它是暴露其行为的较低级别,所以解耦接口不应该是较低级别的一部分吗?如果有多个更高级别的模块取决于相同的较低级别怎么办?

或者,
为什么不制作一个单独的包来放置所有接口,然后可以被更高级别和更低级别使用?(这是分离接口模式设想的.)

我的困境是,我无法弄清楚它们的相对用途和好处.

请不要引用Derek Greer或Robert Martin的文章.我读过这些文章,但仍然存在混淆.

java interface dependency-inversion

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