Java构造对象,java类构造器和实例构造器

java面向对象之构造器:

我们一直在学习怎么封装class,一个class封装好之后的目的一般是创建实例对象,我们其实已经做过了。

Dog dog = new Dog();

new 一个对象的时候到底发生了什么事情呢?

1. java在new一个对象的时候,会先查看对象所属的类有没有被加 载到内存,如果没有的话,就会先通过类的权限定名来加载, 这个过程我们后边聊。

2. 加载并初始化类完成后,再进行对象的创建工作。

java程序员必备的基础知识_java面向对象之构造器

我们先聊聊创建的过程:

1. 在堆区分配对象需要的内存。

2. 对所有实例变量赋默认值。

3. 执行构造方法,比如我们可以使用构造方法赋值。(不太准 确,以后会慢慢补充)

4. 在栈区定义引用变量,然后将堆区对象的地址赋值给它。

java程序员必备的基础知识_java面向对象之构造器

构造方法,也叫构造器,会在new对象的时候主动被调用。

但是,事实上,我们并没有看到任何构造方法。

每个java类,会默认送你一个构造方法,这个方法它是这个样子的:

public Dog(){}

我们可以写出来,也可以不写,这个构造方法什么都没做,我们可

以想办法让它做一些事情,比如:

public Dog(){		name = \"teddy\";		age = 12;}public static void main(String[] args) {		Dog dog = new Dog();		System.out.println(dog.name);		System.out.println(dog.age);}我们并没有调用这个方法啊:但是,结果却出来了:teddy12

当然如果我们想自己按照自己的意愿去构造实例,我们还可以定义 这样的构造器:

同时new的时候就要传递参数了:

public Dog(String name,int age){		System.out.println(\"验证构造方法被调用的时机:【\"+ name + \"】被创建! \");		this.name = name;		this.age = age;		public static void main(String[] args) { Dog dog = new Dog(\"jinmao\",23);				System.out.println(dog.name);				System.out.println(dog.age);}结果:验证构造方法被调用的时机:【jinmao】被创建! jinmao23

此时,如果我们把那个没有参数的构造器删除,

你会发现已经不能这么去new对象了。

public static void main (String args[]){		Dog dog = new Dog();//因为有了有参构造,所以无参构造不能}

【注】一旦自己写了构造器,系统将不再赠送,所以我们一般【会 自己补充上】。

原创文章,作者:自考吧,如若转载,请注明出处:https://www.zk021.com/10013.hrml

(0)
上一篇 2022年10月1日 上午5:56
下一篇 2022年10月1日 上午5:59

相关推荐