java 构造器学习笔记

    xiaoxiao2023-03-24  2

    构造器是一个特殊的方法,这个特殊的方法用于创建实例时执行初始化。

     

    如果程序员没有为一个类编写构造器,则系统会为该类提供一个默认的构造器。一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。

     

    提问:构造器是创建JAVA对象的途径,是不是说构造器完全负责创建JAVA对象?

    答:不是,当程序员调用构造器时,系统会先为该对象分配内存空间,并未这个对象执行默认初始化,这个对象已经产生了——这些操作在构造器执行之前就都完成了。也就是说,当系统开始执行构造器的执行体之前,系统已经创建了一个对象,只是这个对象还不能被外部程序访问,只能在该构造器中通过this来引用。当构造器的执行体执行结束之后,这个对象作为构造器的返回值被返回,通常还会赋给另一个引用类型的变量,从而让外部程序可以访问该对象。

     

    我们需要限制创建该类的对象,可以把构造器设置成其他访问权限,例如设置成protected,主要是用于被其子类调用;把其设置为private,阻止其他类创建该类的实例

    public class Parent { String name; protected Parent(String name){ this.name = name; } }

     

    子类Son一定要重写父类的构造方法(利用这点,可以编写责任链

    public class Son extends Parent { protected Son(String name) { super(name); } }

     

    构造器最大的用处就是在创建对象时执行初始化,系统为这个对象的Field进行默认初始化,把值设为0,false,null;如果想改变值则可以通过构造器来实现

     

    构造器不能直接被调用,构造器必须使用new关键字来调用。为了在构造器B中调用构造器A中的代码初始化,又不会重新创建一个JAVA对象,可以使用this关键字来调用相应的构造器

    public class Apple{ public String name; public String color; public double weight; public Apple(){ } public Apple(String name,String color){ this.name = name; this.color = color; } public Apple(String name,String color,double weight){ this(name,color); this.weight = weight; } }

     

    备注:使用this调用另一个重载的构造器只能用在构造器中,而且必须作为构造器执行体的第一条语句

    转载请注明原文地址: https://ju.6miu.com/read-1200219.html
    最新回复(0)