精华内容
下载资源
问答
  • 1、构造函数的名称必须与类名相同,包括大小写; 2、构造函数没有返回值,也不能用void修饰. 如果不小心给构造函数前面添加了返回值类型,那么这将使这个构造函数变成一个普通的方法,在运行时将产生找不到构造方法的...

    Java里的构造函数(构造方法)

    一、构造函数(构造方法)定义

    构造函数是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。

    二、具体使用

    1、构造函数的名称必须与类名相同,包括大小写;
    2、构造函数没有返回值,也不能用void修饰. 如果不小心给构造函数前面添加了返回值类型,那么这将使这个构造函数变成一个普通的方法,在运行时将产生找不到构造方法的错误。
    3、一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
    4、构造方法可以重载,以参数的个数,类型,顺序。

    三、注意事项

    1、一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们,即构造函数的重载。
    2、如果程序员没有创建任何构造方法时,系统会自动创建一个无参数的构造方法;但当程序员只创建一个或多个含参构造方法时,系统此时不再自动创建无参构造方法,而若一个类中不存在无参的构造方法,则对其子类的构造方法会有所限制。好的声明习惯是,或者不声明构造方法,如果声明构造方法,建议至少声明两个构造方法,其中一个为无参构造方法。
    3.要求子类声明时必须声明构造方法,否则在子类对象初始化时会出错。

    展开全文
  • C++构造函数

    2016-04-11 08:58:38
    构造函数:在对象被构造的时候被调用(显示调用和隐式调用两...构造函数的特点及作用:1.构造函数的命名必须和类名完全相同。2.构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来

    构造函数:在对象被构造的时候被调用(显示调用和隐式调用两种方式),只是在构造对象时根据new对象的参数类型和个数进行选择对应的构造方法进行调用,当没有参数时调用无参构造方法,有参数时调用对应的有参构造方法。构造函数的参数一般用来初始化类的数据成员
    构造函数的特点及作用:

    1.构造函数的命名必须和类名完全相同。

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

    3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用。

    4.当定义一个类定义的时候,通常情况下都会默认一个构造函数,此默认构造函数是不带参数的。当自定义了含参构造函数时,默认构造函数将需要手动书写出来。。(默认的构造函数是无参数的,自己定义的构造函数可以带参数)

    显示调用构造函数      


    Stock food = Stock(14,250,65);
           作用:创建了Stock类对象food; 调用自己定义的Stock类构造函数,对类成员数据初始化。

    隐式调用构造函数Stock food (14,250,65);
    作用: 创建了Stock类对象food; 调用自己定义的Stock类构造函数,对类成员数据初始化。  两种调用方式的结果是一样的,但是第二种方法更加紧凑。

    展开全文
  • 有无参构造函数

    2017-03-10 09:14:00
    都在对象被构造的时候被调用,... 构造函数的特点及作用构造函数的命名必须和类名完全相同。 * 构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。 * 构造函数不...

    都在对象被构造的时候被调用,只是在构造对象时根据new对象的参数类型和个数进行选择对应的构造方法进行调用,当没有参数时调用无参构造方法,
    * 有参数时调用对应的有参构造方法。构造函数的参数一般用来初始化类的数据成员。 构造函数的特点及作用: 构造函数的命名必须和类名完全相同。
    * 构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。
    * 构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用。
    * 当定义一个类定义的时候,通常情况下都会默认一个构造函数,此默认构造函数是不带参数的。
    * 重要的一点:
    * 当自定义了含参构造函数时,默认构造函数将需要手动书写出来。
    * WHY?
    * 构造器其实就是构造对象实例的方法,无参数的构造方法是默认的,但是如果你创造了一个带有参数的构造方法,那么无参的构造方法必须显式的写出来,否则会编译失败。
    * 以你的例子来讲cust有两种实例化的方法,一个是new cust()和new cust(4),前者只是简单实例化一个cust对象,
    * 而后则实例化cust对象后,并将对象中的变量a赋值为4,如果在你的例子中将cust(){}删除,则会编译失败的
    * 也就是说:前者先声明有这个对象,后者再赋值给这个对象。

    展开全文
  • 主要分为:主函数(为了程序能够独立执行入口文件),功能函数又被称为普通函数(功能独立代码块)和面向对象我们使用的构造函数,用来创建对象初始化对象使用。 函数有什么作用? 可以提高代码重用性,为...

    java中的函数及重载递归

    什么是函数?
    函数又被称为方法,是在类中定义功能的独立一段(小程序)代码。它主要分为:主函数(为了程序能够独立执行的入口文件),功能函数又被称为普通函数(功能独立的代码块)和面向对象我们使用的构造函数,用来创建对象初始化对象使用。

    函数有什么作用?
    可以提高代码的重用性,为后续的维护带来方便。

    函数的特点:在类中定义,功能独立的代码块,或者可以说它是我们功能代码块的封装。对函数的功能可以进行重复使用,函数只有被调用了才会执行,如果不调用,就不会执行。如果没有返回值,结构体上用void代替,且不能省略,return 可以省略不写,当然我们也可以写成return ;,不写系统会给我们默认加上。

    使用函数我们应该注意那些?

    1. 函数只能在类中定义,不能在函数内定义函数,当然也不能在类的外部。
    2. 定义函数的结果类型,应该给调用方,由调用方来处理。打个比方:如果直接输出结果,那么return sum的值,没办法进行后续的处理,例如调用方需要sum再进行+1或者其他判断。

    定义函数的三要素:返回值类型,函数名称,参数列表。


    函数的结构体
    针对我们函数的三要素,我们的结构语法为:

    修饰符  返回值类型  函数名称(参数列表){代码块}
    例如:
    public static int getSum(int a,int b){	
    
    	int sum = a+b;
    	return sum;
    
    }
    

    结构体解析:
    修饰符:就是public 这里用static 是为了好调用。
    返回值类型:函数运行后的结果的数据类型,上例就是int类型的相加。既然数数据类型,那么要么是基本数据类型,要么就是引用数据类型。
    函数名称:是java的标识符,只要符合命名的规范即可,建议见名知意。
    参数列表:可以由0-n个,用逗号隔开。

    结构体:数据类型 变量名,数据类型 变量名2,....
    		(数据类型和变量名是整对出现的,用逗号隔开)
    

    {}:作用域;
    return关键字:用来结束函数;
    返回值:给调用放的结果值,必须和返回值类型一致。


    上面都是函数的定义和结构解析,下面我们通过几个案例来对函数进行更加深入的了解。
    案例1:把两个整数相加求和

    public static int getSum(int m,int n){
    	int sum = m+n
    	return sum;
    }
    

    定义函数,不能再函数内定义,要和主函数平级,写完不会执行,需要程序的调用.

    public static void main(String []args){
    
    int sum = getSum(m,n);
    System.out.println(sum);
    }
    

    我们只需要把主函数内的m和n用想要的值来替代,例如int sum = getSum(1,2);,运行函数,就会得到结果3

    案例2:获取两个数中的最大值

    @param m:第一个整数
    @param n:第二个整数
    public static int getMax(int m,int n){
    	if(m>n){
    	return m;
    }else{
    	return n;
    }
      }
    

    主函数

    public static void main(String []args){
    
    int sum = getMax(a,b);
    System.out.println(sum);
    }
    

    a和b分别赋自己想要的值;

    案例3:判断两个整数是否相等

    public static void main(String []args){
    	
    
    }
    	/**
    	*分析:判断所以返回值是boolean类型,
    	*函数名称:compare
    	*参数列表
    	*/
    public static boolean compare(int a,intb){
    	if(a==b){
    	return true
    	}else {
    	return false;}
    }
    

    我们可以定义了boolean类型的bs来对上面的函数进行优化下

    public static boolean compare(int a,intb){
    	boolean bs;
    	if(a==b){
    	bs=true;
    	}else {
    	bs=false;}
    	return bs;
    }
    

    我们通过以上的方法可以解决很多类型的问题,例如键盘获取两个整数,然后进行比较,第一步获取第一个为a,第二个为b,调用函数,方法参数列表里面放进去,就ok了。

    案例4:九九乘法表

    public static void main(String []args){
    	//调用函数
    	print99();
    }
    	/*输出打印九九乘法口诀*/
    	public static void print99(){
    	//外循环控制行
    	for(int i =1;i<=9;i++){
    	//内循环控制列
    	for(int j=1;j<=i;j++){
    	System.out.print(i+"*"+j+"="+i*j+"\t");
    	}
    	System.out.println();
    	}
    }
    

    如果我们需要调用方调用输出,需要再函数内使用System.out.println();语句,否则控制台为空。
    例如:我们需要根据姓名和年龄来获取用户信息。

    public static String getUserInfoByUserNameAndUserAge(String name,int age){
    	String userInfo="我的姓名为:"+name+",我的年龄为:"+age;
    	return userInfo;
    }
    

    这样调用方调用赋值后,直接运行,控制台是空的,因为没有输出语句。如果需要显示必须使用输出System.out


    函数的重载
    什么是函数的重载?
    在同一个类中,允许存在一个以上同名的方法,但是参数列表数量不同,顺序和类型不同。
    经典的记忆题目就是计算器。两个整数相加,三个整数相加,四个整数相加,方法的名称我们可以全部都为getSum。

    public static int getSum(int a,int b){
    	int sum = a+b;
    	return sum;
    	}
    public static int getSum(int a,int b,int c){
    	int sum = a+b+c;
    	return sum;
    	}
    public static int getSum(int a,int b,int c,int d){
    	int sum = a+b+c+d;
    	return sum;
    	}
    

    我们在主函数里面调用,赋值两个,就默认使用第一个,赋值三个就默认使用第二个。


    函数的递归
    函数递归就是函数自己调用自己的体现,我们称之为递归函数。它的有点就是用有限的函数来定义实现对象无限集合,缺点就是由于自己调用自己,重复操作所以内存消耗严重。非必要的时候我们建议不要使用递归。

    递归的原理:通常把一个大型的复杂的问题层层转换成与原来问题相似的规模比较校的问题来解析。这样可以减少代码量。

    学习递归函数,我们就要知道它的三个必要条件:

    边界,前进段,返回段
    

    递归函数的执行流程:当达到边界条件,递归返回,当没有达到递归的边界,递归继续。

    以上就是递归函数的知识点,听这些大家肯定都是很懵的,博主认为这货就是A到B的过程,到了B就开始原路返回到A。
    附上灵魂画师图:
    递归函数
    经典的题目就是求5的阶乘。

    分析如下:
    num为当前要求出的阶乘,可以发现5! = 5 * 4!
    4! = 4 * 3! ……
    所以可以依次调用函数,比如在5! = 5 * 4!中,num就是5, 4!就是factorial(num-1)
    如果你还不理解的话可以手动模拟一下,当num = 2时,
    num = num * factorial(num-1) = 2 * 1 = 2;
    当num = 3时,
    num = num * factorial(num-1) = 3 * 2 = 3 * 2 * 1 = 6;
    当num = 4时,
    num = num * factorial(num-1) = 4 * 6 = 4 * 3 * 2 * 1 = 24
    当num = 5时,
    num = num * factorial(num-1) = 5 * 24 = 5 * 4 * 3 * 2 * 1 = 120

    public class DiGuiQiuJieCheng {
    
        public static void main(String[] args) {
            System.out.println(DiGui(5));
        }
        //构造递归函数
        public static int DiGui(int n) {
            if(n==1) {
                return 1;
            }else {
                return DiGui(n-1)*n;
            }
        }
    }
    
    

    案例:求1+2+3+…+100的和
    分析:1+2+3+…+100可以看成100加到1,这样可以调用本身1;可以避免1加到100这种顺序临界值不好引入,带来的麻烦和计算错误。
    100+99+98+97…+1
    n+(n-1),一直到1作为边界值1+(1-1)。

    public static int getSum(int m){
    	//边界条件
    	if(m==1){
    		return 1;
    	}
    	return m+getSum(m-1);/* 1~100的和的表达式 */
    }
    
    public static void main(String[] args) {
    		System.out.println(getSum(100));//結果5050
    	}
    
    

    学习函数的递归主要就要记住三个必要条件。

    展开全文
  • 其中包含 PPT, DWR JQUERY 多套资料文档 AJAX学习 作者:高伟 ...•缺点:太过复杂,整个界面的构造过于复杂。 AJAX会有怎样未来? •AJAX会有怎样未来? ……………………. AJAX学习交流结束啦!
  • Apollo Cyber Component主要文件类图处理流程Node特点及须知代码详解CreateNode函数的调用点Node的构造函数NodeChannelImpl的构造函数NodeServiceImpl的构造函数创建Reader创建Writer、Service、ClientReader的实质...
  • 抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。 41.构造器Constructor是否可被override? 答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被...
  • 3.11.2 基本类型分类及特点 49 3.11.3 常量后缀 49 3.11.4 常量类型 49 3.11.5 数据类型转换 49 3.11.6 运算符优先级和结合性 50 表达式 50 4 最简单 C程序设计—顺序程序设计 4.1 C语句概述 51 4.2 赋值语句 ...
  • 3.11.2 基本类型分类及特点 49 3.11.3 常量后缀 49 3.11.4 常量类型 49 3.11.5 数据类型转换 49 3.11.6 运算符优先级和结合性 50 表达式 50 4 最简单 C程序设计—顺序程序设计 4.1 C语句概述 51 4.2 赋值语句 ...
  • 构建高质量C#代码 完整扫描版

    热门讨论 2014-06-04 12:24:48
    8.2.4 构造函数的重载 8.2.5 构造函数链 8.3 类成员的可访问性 8.4 变量 8.5 属性 8.6 方法 8.6.1 创建方法 8.6.2 方法的参数 8.6.3 方法的返回值 8.6.4 方法的重载 8.6.5 高质量代码准则:创建高质量的方法 8.7 ...
  • 1.1.3 MATLAB 的主要特点 1.1.4 MATLAB 的系统组成 1.1.5 MATLAB 应用程序简介 1.2 MATLAB R2014a 的目录结构 1.3 MATLAB R2014a 的工作环境 1.3.1 菜单/工具栏 1.3.2 命令行窗口 1.3.3 工作区 1.4 ...
  • 不能有抽象构造函数或抽象静态方法。Abstract 类子类为它们父类中所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为其它类可以在类中实现这些方法。  接口(interface...
  •  现在我们可以从函数定义、 函数说明函数调用的角度来分析整个程序,从中进一步了解函数的各种特点。程序的第1行至第5行为max函数定义。进入主函数后,因为准备调用max函数,故先对max函数进行说明(程序第8行)。...
  • 易学C++,C++入门

    2009-12-06 14:30:11
     15.2.1 构造函数的声明与定义   15.2.2 带参数的构造函数   15.3 先有结点,还是先链表   15.4 “克隆”技术——拷贝构造函数   15.4.1 拷贝构造函数   15.4.2 默认拷贝构造函数   15.4.3 拷贝...
  • 编译原理全套

    2011-12-03 11:17:21
    9.1 优化的主要种类 9.1.1 代码改进变换的标准 9.1.2 公共子表达式删除 9.1.3 复写传播 9.1.4 死代码删除 9.1.5 代码外提 9.1.6 强度削弱和归纳变量删除 9.1.7 优化编译器的组织 9.2 流图中的循环 9.2.1 ...
  • 9.1 优化的主要种类 9.1.1 代码改进变换的标准 9.1.2 公共子表达式删除 9.1.3 复写传播 9.1.4 死代码删除 9.1.5 代码外提 9.1.6 强度削弱和归纳变量删除 9.1.7 优化编译器的组织 9.2 流图中的循环 ...
  • C++程序员面试宝典

    热门讨论 2013-04-01 13:36:19
    面试题107 构造函数与析构函数的调用时机 116 10.2 访问控制 118 面试题108 有哪几种继承方式 118 面试题109 继承时访问级别如何变化 120 10.3 继承时的类作用域 121 面试题110 什么时候发生函数覆盖 121 面试题111 ...
  • static 用法

    2012-10-06 22:34:53
    (对于C++中class对象例外, class对象实例如果不初始化, 则会自动调用默认构造函数, 不管是否是static类型) 特点: static局部变量”记忆性”与生存期”全局性” 所谓”记忆性”是指在两次函数调用时, 在...
  • 面向初学者,对基本概念详尽透彻的剖析,强调良好的编程习惯和风格,结合软件工程、软件测试的基本理念介绍编程知识,是《狂人C:程序员入门必备》的主要特色。 全书分为3个部分:理解程序设计,结构化程序设计与数据...
  • C++语言的主要特点表现在两个方面,一是全面兼容C,二是支持面向对象的方法。C++是一个更好的C,它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充,因此C++...
  • 其实现步骤包括:通过输入输出函数求出遗传算法主函数、初始种群生成函数,采用选择、交叉、变异操作求得基本遗传操作函数。以函数仿真为例,对该函数优化和GA 改进,只需改写函数m 文件形式即可。 5 基于遗传...
  • 流操作符和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。 以上 2-8 参考:http://blog.csdn.net/wfwd/archive/2006/05/30/763551.aspx<br>9. 结构与联合有和...

空空如也

空空如也

1 2 3 4 5 6
收藏数 107
精华内容 42
关键字:

构造函数的主要作用及特点