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

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();
	}
}

运行结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37823003/article/details/107614799