相关疑难解决方法(0)

复制构造器有什么问题?为什么要使用Cloneable接口?

编程C++时,我们习惯于在需要时创建复制构造函数(或者我们被教导).几年前切换到Java时,我注意到现在正在使用Cloneable接口.C#遵循定义ICloneable接口的相同路由.在我看来,克隆是OOP定义的一部分.但我想知道,为什么创建这些接口,并且复制构造函数似乎已被删除?

当我想到它时,我开始认为如果需要复制一个类型未知的对象(如对基类型的引用),则复制构造函数将没有用处.这看似合乎逻辑.但我想知道是否还有其他原因我不知道,Cloneable接口是否比拷贝构造器更受青睐?

oop class-design

14
推荐指数
1
解决办法
8291
查看次数

复制构造函数和防御性复制

什么是复制构造函数

有人可以分享一个小例子,有助于理解防御性复制原则吗?

java defensive-programming

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

Java是否有默认的拷贝构造函数(比如在C++中)?

Java是否具有C++的默认复制构造函数?如果它有一个 - 如果我明确地声明另一个构造函数(不是复制构造函数),它是否仍然可用?

c++ java language-comparisons copy-constructor object-construction

8
推荐指数
1
解决办法
7932
查看次数

人体细胞的有丝分裂

我正在为我的项目编写java中的遗传过程,我想模拟人类细胞的有丝分裂.人类细胞含有23对染色体.有丝分裂基本上是细胞分裂或繁殖,其中细胞产生两个遗传上相同的子细胞.你可以在这里找到一张相关图片(向下滚动一下):

有丝分裂

我认为这种有丝分裂就像一个类"Cell"中的java方法.因此,我用它自己的方法制作了一个染色体类来代表单个染色体,并制作了一个包含23对染色体的"细胞"类.我计划将方法有丝分裂放在Cell类中,但问题是这个方法应该返回2个相同的单元格,我认为创建一个返回此类中2个单元格的方法是不可能的.我想过制作一个返回2个单元格数组的方法,它不起作用.有关如何创建此方法的任何建议?或者可能是另一种方法而不是我正在使用的方法?谢谢.

java bioinformatics

7
推荐指数
1
解决办法
457
查看次数

类构造函数如何具有相同类的参数?

当我发现其中一个构造函数将"String"对象作为参数时,我正在查看String.java源代码.这看起来很简单,但我无法消化它.例如:

public class Example {

    private String value;

    public Example() {
        // TODO Auto-generated constructor stub
    }

    public Example(Example e){
        value = e.getValue();
    }

    String getValue() {
        return value;
    }
}
Run Code Online (Sandbox Code Playgroud)

在第一次编译类Example时,编译器会遇到第二个带有'Example'类对象作为参数的构造函数.在这一点上,它将如何找到它,因为它仍在编译这个类?

java constructor

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

Java 继承 - 将超类对象传递给子类可以简化吗?

我们知道

String s = new Object();
Run Code Online (Sandbox Code Playgroud)

会导致错误:

incompatible types: Object cannot be converted to String
Run Code Online (Sandbox Code Playgroud)

因此,从下面的例子来看,我们不能这样做:

Car car = new Vehicle();
Run Code Online (Sandbox Code Playgroud)

但是对于 Java 来说,如果有这样的东西会有什么问题:

超级班:

    public class Vehicle {
        String color;
        int numberOfWheels;
        int maxSpeed;
        // etc.
    }
Run Code Online (Sandbox Code Playgroud)

子类:

    public class Car extends Vehicle {

        String engineType;
        String transmissionType;
        int numberOfDoors;
        // etc.

        Car(Vehicle vehicle) {
                            // the theoretical idea of passing
                            // the superclass object within a subclass
            super = vehicle;
        }
    }
Run Code Online (Sandbox Code Playgroud)

“超级=车辆;” 将允许我们一次性将先前设置的超类(车辆)的所有值传递给新的子类(汽车)。用法是:

    public class App { …
Run Code Online (Sandbox Code Playgroud)

java inheritance

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

默认java构造函数

由于我是java新手,我想知道,1.当我创建一个空类时,定义了多少个默认构造函数?2.我是否需要定义复制构造函数,或者它是否在C++中自动定义?

java constructor class

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