构造方法
Posted gl0102
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造方法相关的知识,希望对你有一定的参考价值。
package cn.gl.ObjectLearn; /** * 一、构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。 * 每当类实例化-一个对象时,类都会自动调用构造方法。 * 构造方法,就是创建类的对象过程中运行的方法,也就是对象的初始化方法。 * 注意: * 在定义构造方法时,构造方法没有返回值,但这与普通没有返回值的方法不同, * 普通没有返回值的方法使用public void methodEx()这种形式进行定义, * 但构造方法并不需要使用void关键字进行修饰。 * 二、在构造方法中可以为成员变量赋值,这样当实例化一个本类的对象时, * 相应的成员变量也将被初始化。如果类中没有明确定义构造方法, * 则编译器会自动创建一个不带参数的默认构造方法。 * 注意: * 如果在类中定义的构造方法都不是无参的构造方法, * 则编译器:不会为类设置一个默认的无参构造方法, * 当试图调用无参构造方法实例化一个对象时,编译器会报错。 * 所以只有在类中没有定义任何构造方法时, * 编译器才会在该类中自动创建一个不带参数的构造方法。 * 三、this可以调用类的成员变量和成员方法,事实上this还可以调用类中的构造方法 * 四、私有构造方法 * 构造方法同其他方法一样,也可以用private修饰,私有的构造方法无法在本类外部使用, * 也就导致本类无法用new实例化,这样可以控制对象的生成。 * @author 冷夜雨花未眠 E-mail:787831425@qq.com * @version 创建时间:2019年11月9日 */ public class ObDemo5 { /*1 在类中定义一个无参构造方法 * public ObDemo5(){ }*/ /*2在类中定义一个有参构造方法 * public ObDemo5(int a){ }*/ public static void main(String[] args) { ObDemo5 ob1=new ObDemo5();//当注释1之后,创建对象没有报错,说明这个构造方法存在即编译器自动创建的 MyTest e=new MyTest(); MyTest e2=new MyTest(5); Books book=Books.librayBorrow();//不是new出来的 } } class MyTest{ int i; public MyTest(){ this(1);//使用this调用本类构造方法 /*i=1; System.out.println("有"+i+"个");*///这段代码效果和上面的this(1)效果是一样的 } public MyTest(int i){ this.i=i;//使用this调用本类成员变量 System.out.println("i是:"+i+"个"); } } class Books{ private Books(){ //单例模式 } static public Books librayBorrow(){ return new Books(); } }
输出结果:
i是:1个
i是:5个
以上是关于构造方法的主要内容,如果未能解决你的问题,请参考以下文章
无法解析片段中的 ViewModelProvider 构造?
Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段
Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段