java构造方法和普通方法区别

本文详细解析了Java中的构造方法与普通方法的区别与联系,包括构造方法的特性、如何调用、重载以及对成员变量的初始化,同时对比了普通方法的功能与使用场景。

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

java构造方法和普通方法

构造方法

构造方法也叫做构造器,使用来创建一个实例对象的。

1.构造方法必须和类名一致,并且没有返回值

public class Test{
    public Test(){
        
    }
}

注意:构造方法没有返回值,所以也就没有return 。

2.在实例化对象的时候其实调用的就是构造方法

public class Test01{
	public Test01(){
		System.out.println("构造方法被调用了~~~");
	}

	public static void main(String[] args ){
		Test01 t = new Test01();
	}
}

运行结果:

在这里插入图片描述

以上实验证明,在new对象的时候其实就是调用的类的构造方法。

3.构造方法也是可以被重载的

普通方法支持重载,那构造方法呢?我们看下面的例子…

public class Test01{
	public Test01(){
		System.out.println("构造方法被调用了~~~");
	}
	public Test01(int i){
		System.out.println("有参构造!!!");
	}


	public static void main(String[] args ){
		Test01 t = new Test01();
	}
}

运行结果:

在这里插入图片描述

运行过程中没有报错就证明说是构造方法也是可以被重载的,那如果有多个构造方法,怎么知道自己调用的是哪个构造方法呢?其实很简单,直接看new 后面的那个方法,那个其实就是在调用的构造方法,如果里面没有值,例如:new Test01();这种的话就是调用的就是无参的构造方法,要是new Test01(12);这种的话就是调用的有参的构造方法。

4.父类的构造方法不能被子类继承,但是可以被子类调用

普通的方法都是通过对象.方法来调用的,但是构造方法特殊,它是用来创建对象的。

java文档中有这么一句话:

“A subclass inherits all the members (fields, methods, and nested classes) from its superclass. Constructors are not members, so they are not inherited by subclasses, but the constructor of the superclass can be invoked from the subclass.”

翻译过来就是:

子类从其超类继承所有成员(字段,方法和嵌套类)。构造函数不是成员,因此它们不会被子类继承,但是可以从子类中调用超类的构造函数。”

5.构造方法可以对成员变量进行初始化(包括被private修饰符修饰)

public class Test01{
	private int age;
	private String name;

	
	public Test01(int age,String name){
		this.age = age ;
		this.name = name ;
	}


	public static void main(String[] args ){
		Test01 t = new Test01(23,"赵四");
		System.out.println(t.age + "  "+t.name );
	}
}

运行结果:

在这里插入图片描述

普通方法

1.普通方法用来描述对象的动态行为或是是特征

  • 普通方法有返回值
  • 普通方法支持被继承和重写(不考虑访问控制)
  • 普通方法名不能和类名一致
  • 普通方法名首字母小写。
  • 普通方法也支持重载
  • 普通方法支持重写,但是构造方法都不能继承,更不要说重写了。

2.构造方法可以调用普通方法,但是普通方法不能调用构造方法

public class Test01{
	public Test01(){
		fun();
	}
	public void fun(){
		System.out.println("普通方法被调用了~~~~");
	}


	public static void main(String[] args ){
		Test01 t = new Test01();
	}
}

运行结果:

在这里插入图片描述

接下来看看普通方法是否可以调用构造方法

public class Test01{
	public Test01(){
		
	}
	public void fun(){
		Test01();
	}


	public static void main(String[] args ){
		Test01 t = new Test01();
		t.fun();
	}
}

运行结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值