精华内容
下载资源
问答
  • 一个类可能没有构造函数。(这里要指出的一个重要区别是,JVM并不要求所有类文件都具有构造函数;但是,如果未明确声明构造函数,则Java定义的任何类都具有默认构造函数。 前者的示例是通过Java代码创建的)。考虑...

    该问题的典型答案是“如果不声明构造函数,则会创建默认构造函数”。 通常是这样,但并非总是如此。 一个类可能没有构造函数。

    (这里要指出的一个重要区别是,JVM并不要求所有类文件都具有构造函数;但是,如果未明确声明构造函数,则Java定义的任何类都具有默认构造函数。 前者的示例是通过Java代码创建的)。

    考虑下面这个问题的代码:

    public class Outer

    {

    private class Inner {}

    void someMethod()

    {

    Inner inObj = this.new Inner();

    }

    }

    如果使用OpenJDK进行编译,则会发现3个类文件:

    Outer.class

    Outer$Inner.class

    Outer$1.class

    Inner是其中最不寻常的:它实际上没有任何内容,甚至没有构造函数:

    Compiled from "Outer.java"

    class Outer$1 {

    }

    而Inner和Outer类具有生成的构造函数:

    Compiled from "Outer.java"

    class Outer {

    Outer();

    Code:

    0: aload_0

    1: invokespecial #1 // Method java/lang/Object."":()V

    4: return

    void someMethod();

    Code:

    0: new #2 // class Outer$Inner

    3: dup

    4: aload_0

    5: aconst_null

    6: invokespecial #3 // Method Outer$Inner."":(LOuter;LOuter$1;)V

    9: astore_1

    10: return

    }

    Compiled from "Outer.java"

    class Outer$Inner {

    final Outer this$0;

    Outer$Inner(Outer, Outer$1);

    Code:

    0: aload_0

    1: aload_1

    2: invokespecial #1 // Method "":(LOuter;)V

    5: return

    }

    展开全文
  • 这是段代码作为例子,后面的休息只是方法(看看底部的迷宫)。所以当这实例化时,使用Maze...我认为所有的都需要构造函数如何打印出2-d网格数组?迷宫:public class Maze{private final int TRIED = 3;priv...

    这是一段代码作为例子,后面的休息只是方法(看看底部的迷宫类)。所以当这个实例化时,使用

    Maze labyrinth = new Maze();

    System.out.println (labyrinth);

    这将打印出网格数组。

    这是合法吗?我认为所有的类都需要构造函数如何打印出2-d网格数组?

    迷宫类:

    public class Maze

    {

    private final int TRIED = 3;

    private final int PATH = 7;

    private int[][] grid = { {1,1,1,0,1,1,0,0,0,1,1,1,1},

    {1,0,1,1,1,0,1,1,1,1,0,0,1},

    {0,0,0,0,1,0,1,0,1,0,1,0,0},

    {1,1,1,0,1,1,1,0,1,0,1,1,1},

    {1,0,1,0,0,0,0,1,1,1,0,0,1},

    {1,0,1,1,1,1,1,1,0,1,1,1,1},

    {1,0,0,0,0,0,0,0,0,0,0,0,0},

    {1,1,1,1,1,1,1,1,1,1,1,1,1} };

    public String toString ()

    {

    String result = "\n";

    for (int row = 0; row < grid.length; row++)

    {

    for (int column=0; column < grid[row].length; column++)

    result += grid[row][column] + "";

    result += "\n";

    }

    return result;

    }

    }

    展开全文
  • Java抽象类可以构造函数吗

    万次阅读 多人点赞 2019-03-11 21:23:51
    因为你不可以创建抽象的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,当你创建具体的实现。现在一些面试官问,如果你不能对抽象实例化那么构造...

    可以有,抽象类可以声明并定义构造函数。因为你不可以创建抽象类的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,当你创建具体的实现类。现在一些面试官问,如果你不能对抽象类实例化那么构造函数的作用是什么?好吧,他可以用来初始化抽象类内部声明的通用变量,并被各种实现使用。另外,即使你没有提供任何构造函数,编译器将为抽象类添加默认的无参数的构造函数,没有的话你的子类将无法编译,因为在任何构造函数中的第一条语句隐式调用super(),Java中默认超类的构造函数。

    展开全文
  • Java抽象类可以构造函数吗? 可以有,抽象类可以声明并定义构造函数。 因为抽象类不可以创建实例,所以抽象类的构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数)。 既然...

    可以有,抽象类可以声明并定义构造函数。
    因为抽象类不可以创建实例,所以抽象类的构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数)。

    既然不能对抽象类实例化,那么抽象类构造函数的作用是什么?
    可以用来初始化抽象类内部声明的通用变量,并被各种实现使用。另外,即使没有提供任何构造函数,编译器将为抽象类添加默认的无参数的构造函数,没有的话子类将无法编译,因为在任何构造函数中的第一条语句隐式调用super (),Java中默认超类的构造函数。子类对象实例化的时候,满足先执行父类构造,再执行子类构造的顺序。

    文章参考内容来自 万河归海

    展开全文
  • C++的构造函数的作用:初始化类对象的数据成员。即类的对象被创建的时候,编译系统对该对象分配内存空间,并自动调用构造函数,完成类成员的...1、无参构造函数如果创建一个类没有写任何构造函数,则系统会自动生...
  • 其实一个类在我们不写的情况下,都会生成6个默认的成员函数 分别是构造函数,析构函数,拷贝构造函数,赋值运算符重载,取地址运算符重载,对const对象取地址运算符的重载 构造函数 构造函数是特殊的成员函数,它...
  • 因为你不可以创建抽象的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,当你创建具体的实现。现在一些面试官问,如果你不能对抽象实例化那么构造...
  • ``` class T { public: T(int i) :_i(i) {} ...如果定义了一个构造函数不是就会取消合成的默认构造函数吗可以定义不可以赋值是吧?刚才发现 const int ci; int &ri; 也通过编译了。
  • "只有一个参数的构造函数可以被编译器作为类型转换函数"从C++11起被废止, 新标准规定具有多个参数的构造函数可以作为转换构造函数, 新的标准是"没有被声明为explicit的构造函数可以作为转换构造函数(c...
  • 因此,一个类可以构造函数的多个版本。此外,构造函数是可以重载的。 2. 什么情况下会调用拷贝构造函数? 创建对象时,以初始化值的数量、类型去匹配构造函数。程序会自动匹配合适的构造函数,如果没给初始化值的...
  • 最近在学《Effective C++》和工厂模式,都遇到了这个问题:静态成员函数创建了一个类对象,使用到了私有的构造函数。 觉得有点疑问,不是说静态成员函数只能访问静态成员函数,全局变量和自身的函数形参吗,怎么...
  • 类中什么都不写会被我们成为空类,但是空类的意思真的就是里面是空的吗,并不是一个类,假如我们没有显示定义,会自动生成6个成员函数。当我们对于默认生成的不满意,便可以自己定义其中不满意的函数。下面我们来看...
  • 假如有OilCar, ...这样赋值会调用构造函数的输出,但是我不想输出这一段,有没有什么赋值方法可以不输出构造函数的输出呢,只能再多写一个没有输出的构造函数吗。用多态可以吗(我还没学到)。
  • 文中一系列思考和内容引发自以下问题:我需要在一个类的构造函数中...显然在初始化列表中,当前对象占用的内存已经创建好了,ok,this是可以访问的,只是其中的某些成员是没有初始化的(因为没有构造函数还没执行...
  • 的6默认成员函数

    2018-11-05 22:04:06
    如果我们定义了一个类,里面什么都没有,就是空类? 可是空类里面真的什么都没有吗?其实并不是这样的,任何一个类在我们不写的情况下他都会自动生成6个默认成员函数。 class Date{}; 1.构造函数构造函数...
  • 随着ES6新语法规范的普及,目前的JS语言已经完全成为项强大的面向对象编程语言,作为面向对象编程语言中最重要的环,“”这概念让很多JS的初学者十分抓狂,什么是?(就是class吗?)什么是构造函数(是...
  • 一、构造方法的定义(一)什么构造方法实例化一个类的对象后,如果要给属性赋值,需要通过访问对象的属性或setXXX()方法。在实例化对象后同时给对象的属性赋值可以使用构造方法,构造方法也叫做构造函数。用来对对象...
  • 抽象构造方法

    千次阅读 2016-08-12 17:50:56
    首先要说明的是:抽象可以定义构造方法。 ... 在之前认为:1,抽象是不能实例化的;...抽象没有构造函数吗? (这两问题会在下面详细解答)    1,抽象不继承直接用。  就拿前段
  • 1. Java抽象类可以构造函数吗? 可以有,抽象类可以声明并定义构造函数。因为你不可以创建抽象类的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,...
  • 2 static成员函数可以调用构造函数吗? 答案是肯定的,由于static成员函数没有this指针,所以一般static成员函数是不能访问non-static成员的,包括成员函数和成员变量。 由于构造函数特殊性,它从无到有构造一个对象...
  • 详解C++之函数重载

    2020-12-17 04:35:31
    构造函数重载 普通成员函数重载 静态成员函数重载 全局函数、静态成员函数、普通成员函数可以发生重载吗? 本质就是函数名和函数参数不同,并且发生在同一个作用域 静态函数和普通成员函数是可以的 全局函数作用域在...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 146
精华内容 58
关键字:

一个类可以没有构造函数吗