精华内容
下载资源
问答
  • 构造函数返回值

    2019-09-29 14:37:58
    而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的。 构造函数是没有返回值的,即使使用void也不可以;但是在一个类中可以使用返回值为...

    2.构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用void来修饰.

    这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择(深表怀疑).而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的。

    构造函数是没有返回值的,即使使用void也不可以;但是在一个类中可以使用返回值为void,名称为类名的函数。

    假设构造函数可以有返回值,
    那么我们必须要考虑程序员可能在构造函数中返回*this
    但是,遗憾的构造函数执行结束并不意味着整个对象都完成了定义和分配,
    编译器内部可能还有些工作要做
    所以允许构造函数返回*this将带来巨大的隐患,
    所以C++缔造者索性放弃了构造函数的返回问题

    既然没有返回值,那为什么不将constructor定义为 void 类型。原因就是Bjarne博士将 constructor 定位为一个特殊的"函数",它没有名字,无法取函数地址,只能由系统调用,用户无法手动调用(别拿vc说事儿,那根本不符合标准)。  如果constructor被定义成void类型的,那不就变成一个普通函数了吗,普通函数你凭什么不允许我手动调用? Bjarne 为了更好的突出 constructor 的特殊性,所以规定 constructor 没有返回类型,即使是void也不行----constructor并不是真正意义上的“函数”,所以你无法手动调用。

    构造函数是返回该类的实例,可以把这个类的实例当为构造函数的返回值,因为构造函数的返回值类型总是当前类,因此无须定义返回值类型。

    http://blog.csdn.net/wudishine/article/details/7285951

    个人理解:如果有返回类型会造成混乱。一种是返回类型不当,如果返回的是地址,还有一块返回值的话会造成在内存中分配两块指针。存在对象销毁的问题,指向同一个对象。如果有返回值,不论是何值,我们调用一次构造函数创建一个对象就可以用对象再次调用构造函数,因为其已经变成一个普通函数了。我们用到的只是临时对象的指针实例。防止恶意问题的出现。

    语法上没有,底层可能有,但是编译器不通过。new 会创建一个对象,并且返回对象的地址,也可以认为是引用。这不是返回值,而是new关键字本来的功能。构造函数让其有特殊性,避免与普通函数的灵活性出现问题。

    http://blog.csdn.net/qychjj/article/details/4901181

    方法的灵活性和构造函数的固定性之间的协调,避免灵活性带来的问题。

    http://blog.csdn.net/qychjj/article/details/4901181

    转载于:https://www.cnblogs.com/LiloT/p/3276874.html

    展开全文
  • 构造方法没有返回值

    2020-09-03 09:25:48
    构造方法是一种特殊的方法,具有以下特点。 (1)构造方法的方法名必须与类名相同。 (2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。 (3)构造方法的主要作用是完成对象的初始化工作,...

    构造方法是一种特殊的方法,具有以下特点。
    (1)构造方法的方法名必须与类名相同。
    (2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
    (3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
    (4)构造方法不能由编程人员调用,而要系统调用。
    (5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构 造器,这个构造器不执行任何代码。
    (6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
    我个人认为规定是没有返回的,但实际是隐式返回的类的对象。

    展开全文
  • 1.js构造函数返回值问题 构造函数本不应该,不需要有返回值,实际执行的返回值就是此构造函数的实例化对象 ...注意:构造函数中的 this 指向实例化的对象,所以构造函数通过 this 给实例添加属性和方法 function foo

    1.js构造函数返回值问题

    1. 构造函数本不应该,不需要有返回值,实际执行的返回值就是此构造函数的实例化对象
    2. 但是在 js 中构造函数可以有返回值也可以没有,没有时,和正常的构造函数一样,返回实例化对象
    3. 返回值是非引用类型,如基本类型(string,number,boolean,null,undefined)则与无返回值相同
    4. 返回值是是引用类型,则实际返回值为这个引用类型,就会出现问题

    注意:构造函数中的 this 指向实例化的对象,所以构造函数通过 this 给实例添加属性和方法

    function foo(name){
        return name
    }
    // 1. 返回值为非引用类型
    // a为foo构造函数实例化出来的一个空对象
    var a = new foo('字符串')
    console.log(a)                // foo{}
    console.log(typeof a)         // 'object'
    a.__proto__ == foo.prototype  // true
    
    // 2. 返回值为引用类型
    // b为返回的引用对象,不属于构造函数的实例了
    var b = new foo({name:'对象'})
    console.log(b)                // {name:'对象'}
    console.log(typeof b)         // 'object'
    b.__proto__ == foo.prototype  // false
    

    2.牛客网面试题

    1. 我们来看下牛客网的一道题
    2. String(‘foo’) 返回的是string类型,非引用类型,所以不会影响,因为构造函数没有属性,返回一个空对象
    3. new String(‘foo’) 返回的是字符串对象,所以会返回该字符串对象
    console.log( 'foo' == new function(){ return String('foo') } )      // false
    console.log( 'foo' == new function(){ return new String('foo') } )  // true
    
    展开全文
  • 1.构造方法不能写返回值 2.构造方法名必须和你当前的类名一模一样,大小都得写一样 构造方法是一个方法,那么他可以进行方法重载吗? 可以进行方法重载 构造方法的作用: 1.定义无参构造方法,可以new ...

    在我们使用类的时候会使用一个特殊的方法叫构造方法,也叫构造器
    作用:
    1.构造方法就是专门创建对象的方法,当我们在new的时候其实调用的就是构造方法
    public 构造方法名(参数){
    }
    注意:
    1.构造方法不能写返回值
    2.构造方法名必须和你当前的类名一模一样,大小都得写一样
    构造方法是一个方法,那么他可以进行方法重载吗?
    可以进行方法重载
    构造方法的作用:
    1.定义无参构造方法,可以new 对象
    2.定义有参构造方法,可以在new对象的同时给属性赋值
    注意:
    如果类中没有定义构造方法,系统会自动给我提供一个无参的构造方法,
    如果类中自己定义了有参构造方法,他会把系统提供的无参构造方法覆盖掉,需要手动再提供一个无参构造方法

    School类

    public class School {
    private String name;//校名
     private String address;//地址
     //构造方法
     public School(){
      System.out.println("构造方法执行了");
     }
     //重载得构造方法
     public School(String name1){
      name=name1;
     }
     //第二种使用构造方法给属性赋值
     public School(String n,String a){
      name=n;
      address=a;
     }
     //第一种使用set方法给属性赋值,只能单个赋值
     public void setName(String name1){
      System.out.println("一个参数得构造方法执行了");
      name=name1;
     }
     public String getName(){
      return name;
     }
     public void setAddress(String address1){
      address=address1;
     }
     public String getAddress(){
      return address;
     }
     

    Test School类

    public class TestSchool {
    public static void main(String[] args) {
      // TODO Auto-generated method stub
      School sc1=new School("枣庄学院");
      System.out.println(sc1.getName());
      System.out.println("==========使用set方法给属性赋值================");
      //创建school对象
      School sc=new School();//new后面这个方法就是构造方法
      sc.setName("国际希望小学");
      sc.setAddress("山东");
      System.err.println("校名:"+sc.getName()+",地址"+sc.getAddress());
      System.out.println("======使用构造方法给属性赋值==========");
      //new对象的同时给属性赋值,省去了set方法的麻烦,针对多个属性同时赋值的场合
      School sc2=new School("北京XX","北京海淀区");
      //如果是单个变量值需要改变用set方法
      sc2.setAddress("山东济宁");
      System.err.println("校名:"+sc2.getName()+",地址"+sc2.getAddress());
      }
      }
    展开全文
  • Java入坟day08 原地升天の方法(重载,构造返回值) 最后做题8 方法的理解和语法格式: 1.解决某一件事的功能实现。方法,是一段代码块的封装,方法中的代码应围绕某一功能的实现来写,目标明确,逻辑清晰。方法的...
  • 构造函数中使用this定义成员变量和成员方法,普通函数中不使用this关键字定义成员变量和方法。然而在JavaScript中构造函数可以有返回值也可以没有。 1.没有返回值的情况像其他传统语言一样,返回实例化的对象 2....
  • 构造方法: public book(){ // 方法体 } 定义无返回值方法: public void book(){ //方法体 } 请问构造方法是否如void没有返回值的,还是有返回值但是不能定义返回值类型而已。
  • 本质/用途:构造方法是用来初始化成员属性的,它能够把定义对象时的参数传给对象的域,它的本质就是一个方法。 构造方法有如下特点: 1.构造方法名必须与类名相同。 2.构造方法没有返回类型,但不用void声明(不用...
  • 构造方法有没有返回值的答案

    千次阅读 2013-11-15 18:46:00
    构造方法是一种特殊的方法,具有以下特点。(1)构造方法的方法名必须与类名相同。(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。(3)构造方法的主要作用是完成对象的初始化工作,它...
  • java方法 目录 方法的定义 方法的格式 ...访问权限 [修饰符] 返回值类型 方法名(参数列表){ ... 方法体 ... } 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型...
  • java入门 常见问题0016:除了构造方法外,其他方法必须给定返回值类型 修改结果如下:
  • 那么为什么构造函数没有返回值呢,主要是为了区分构造函数和其它方法。其实,你可以尝试在你的构造函数前加上void,你会发现编译可以通过,但是编译器把它认为是方法,而不是构造函数,当然也无法在new的时候自动...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,289
精华内容 3,315
关键字:

构造方法返回值