Java面向对象(3)

本文深入解析Java中的构造方法和代码块,包括构造方法的类型、作用及特点,以及代码块的概念、类型和执行顺序。通过实例展示静态代码块、构造代码块和局部代码块的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.构造方法

构造方法总体分为有参构造和无参构造
格式:[访问权限修饰符] 类名([参数列表]){//构造体}

作用:	在创建对象时调用构造器
		在创建对象的同时还可以给当前类的私有属性赋值
		
好处:创建对象时可以直接给属性赋值,比单独调用方法赋值简单

特点:	多个构造器之间形成重载
		如果用户没有创建构造器,系统就会自动分配一个无参构造器
		如果用户在类中创建构造器,系统就不会自动分配无参构造
		如果构造器是默认的访问权限修饰符,它和类的访问权限一致

2.代码块

1.概念
			在java中使用{}括起来的代码称为代码块
			根据其位置和声明不同可分为:局部代码块、构造代码块、静态代码块
2.详细说明
	1.构造代码块:
			在类中,方法外,每次调用构造方法都会先执行构造代码块,也叫初始化代码块或实例代码块,构造代码块可以有多个,每次调用对象都会先执行构造代码块
	2.局部代码块:
			在方法中(局部位置),用于限定变量的生命周期,也叫普通代码块
	3.静态代码块:
			在类中方法外,用static修饰的{}叫静态代码块,一般用于对类进行初始化,随着类的加载而加载
	4.同步代码块:
		由synchronized修饰的{},在方法中.用于解决并发操作可能造成的异常,java的多线程支持引入了同步监视器来解决这个问题,使用同步监视器的通用方法就是同步代码块
3.执行顺序
静态代码块->构造代码块->构造方法
局部代码块和同步代码块与顺序无关,调用即用,不调用即不用

class Fu{//加载父类文件就要加载静态代码块
	static{
		System.out.println("静态代码块Fu");
	}
	{//所以要执行父类的构造方法先执行父类的构造代码块
		System.out.println("构造代码块Fu");
	}
	public Fu(){
		System.out.println("构造方法Fu");
	}
}
class Zi extends Fu{//继承了父类,先加载父类再加载子类
	static{
		System.out.println("静态代码块Zi");//再回来加载子类的静态代码块,需要注意,静态代码块的执行是随着类的加载而加载
		//只有协同关系,不存在执行关系
	}
	{//执行完父类的构造代码块和构造方法在返回来执行子类的构造代码块和构造方法
		System.out.println("构造代码块Zi");
	}
	public Zi(){//调用子类的构造方法前先调用父类的构造方法
		System.out.println("构造方法Zi");
	}
}
public class Ceshi {
	public static void main(String[] args){
		Zi zi=new Zi();//创建子类对象	Zi zi就在加载父子.class	new Zi()在调用构造函数
	}
}
结果:
	静态代码块Fu
	静态代码块Zi
	构造代码块Fu
	构造方法Fu
	构造代码块Zi
	构造方法Zi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰尼龟的知识花园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值