为什么我们需要OOP中的构造函数?

时间:2014-10-17 11:56:23

标签: oop methods constructor

我是OOP的新手。我还处于学习阶段。

为什么我们需要构造函数,当我们通过编写"初始化函数"来初始化属性(变量)的值时?

基本上,为什么我们写一个构造函数,即使通过编写一个初始化变量的函数来实现相同的结果呢?

8 个答案:

答案 0 :(得分:3)

答案很简单 为什么我们写Constructor?
因为在C中你可以写,  int i;

如果这样写的话在上面的情况下数据类型和变量定义了你是否定义了这个为i变量分配的内存。所以我们在这里简单定义类名和变量名(对象名)我们可以创建分配给的内存班级名称。

实施例 myClass objectName;

但是在C ++中,new关键字用于动态内存分配,所以这个动态内存我们可以分配给我们的类但是我的示例myClass是我们的类,我们想分配给分配的动态内存。

所以

myClass objectName = new myClass();

并且简单的构造函数是类变量的内存分配称为构造函数。

答案 1 :(得分:2)

构造函数是“初始化函数”

而不是调用两个函数

object = new Class;
object.initialize();

你只需致电

object = new Class();

构造函数中的逻辑可以与initialize函数内部的逻辑相同,但是它更整洁并且避免命名函数initialize(),命名为我的initialize_variables(),以及其他人命名他们的init_vars()。一致性很有用。

如果构造函数非常大,您可能仍希望将变量初始化拆分为单独的函数并从构造函数中调用该函数,但这是该场景的特定异常。

答案 2 :(得分:1)

通常将强制性内容放入构造函数中,将可选内容放入Initialise函数中。

例如,考虑需要电源的放大器,以便将其提供给其构造函数。从逻辑上讲,您可能希望将其打开并设置其功率级别,但有人可能会争辩说您可能不希望这样做,直到以后。在伪代码中:

class Amplifier
{
    public Amplifier(PowerSource powerSource)
    {
        // create amplifier...
    }

    public int PowerLevel;

    public void Initialise()
    {
        // turn on...
    }
}

上面的例子相当幼稚,但它说明了正在发挥作用的概念。然而,这始终是一个设计问题,而且意见各不相同。

然而,某些类对象必须在构建阶段执行明显的设置操作。在这些情况下,具有构造函数的要求非常容易理解。例如,如果您的对象可能需要可变数量的内存,那么构造函数将是分配它的逻辑位置,析构函数或终结器将是一个合理的位置来重新释放它。

答案 3 :(得分:1)

即使您不使用构造函数,每当您创建对象时,它都会由您的语言翻译器隐式调用。为什么?

原因是它用于对象初始化意味着我们在类中声明的变量(实例)被初始化为其默认值。

class Person {
    //Class have two parts
    //1.Data(instance variable)
    //2.Methods(Sub-routine)
    String name;
    int age;
  }
  public class Stack{
      public static void main(String[] args){
         Person person1 = new Person();
         System.out.println("Name: "+person1.name);
         System.out.println("Age: " + person1.age);
      }
  }

输出名称:null         年龄:0

“null”和“0”是默认值,由默认构造函数隐式设置。

答案 4 :(得分:1)

当我们通过创建实例或对象来初始化一个类时,会自动调用构造函数。当我们每次创建对象时都需要执行大量代码时,这非常有用。

当我们创建“图形用户界面”时可以看到构造函数的最佳使用。在为应用程序构建 GUI 时,我们需要将用于设计 GUI 的代码和应用程​​序的业务逻辑分开。在这种情况下,我们可以在各自的方法中的构造函数和业务逻辑中编写用于设计 GUI 的代码。这也使代码整洁。

此外,在创建对象时,可以使用构造函数将全局变量初始化为其默认值。如果我们不初始化全局变量,那么编译器将使用默认构造函数隐式地进行。

所以构造函数是一个非常明智的概念,起初似乎是一种特质,但随着您越来越多的编码,您会意识到它的重要性。

答案 5 :(得分:0)

因为构造函数正是为此:避免使用“初始化函数”

另外,你可以拥有任意数量的构造函数:你可以根据自己想要的对象来提供一些参数。

答案 6 :(得分:0)

构造函数是一个特殊的成员函数,它与类名具有相同的名称,并在创建该类的对象时调用。它们用于初始化对象中的数据字段。

构造函数具有以下属性:

  1. 它与班级名称相同。

  2. 只要创建了类的对象,就会调用它。

  3. 它没有返回类型甚至无效。
  4. 它可以有参数。
  5. 构造函数可以重载。
  6. 当编译器在类中找不到任何构造函数时,将自动创建默认构造函数。
  7. 参数化构造函数可以使用this()方法调用默认构造函数。
  8. 构造函数可以是静态的,用于静态数据字段初始化。
  9. 它不是隐含继承的。
  10. 了解更多信息 https://en.wikipedia.org/wiki/Constructor_(object-oriented_programming)

答案 7 :(得分:0)

构造函数的作用是初始化变量/ values。它是“初始化函数”。我找到为什么我们使用构造函数而不是普通函数来初始化变量的唯一原因是阻止不同的人使用不同的函数名称并避免歧义,使用一个运行类自动实例化的构造函数要容易得多,而不必为实例化编写单独的代码。这可能看起来很小,并且有点像'需要做很多工作,但只针对一个非常小的计划,对于较大的计划,斗争是真实的。