Taday——类和对象(3)

本文详细介绍了Java构造方法的特点,包括其名称规则、参数处理、返回值隐式以及示例演示。重点讲解了无参构造和有参构造的区别,以及在类中重写构造方法的应用。通过实例展示如何在类中正确使用构造方法进行对象初始化。
摘要由CSDN通过智能技术生成

一、构造方法

Java 构造方法有以下特点:
(1)方法名必须与类名相同
(2)可以有 0 个、1 个或多个参数
(3)没有任何返回值,包括 void
(4)默认返回类型就是对象类型本身
(5)只能与 new 运算符结合使用

值得注意的是,如果为构造方法定义了返回值类型或使用 void 声明构造方法没有返回值,编译时不会出错,但 Java 会把这个所谓的构造方法当成普通方法来处理。

这时候大家可能会产生疑问,构造方法不是没有返回值吗?为什么不能用 void 声明呢?

简单的说,这是 Java 的语法规定。实际上,类的构造方法是有返回值的,当使用 new 关键字来调用构造方法时,构造方法返回该类的实例,可以把这个类的实例当成构造器的返回值,因此构造器的返回值类型总是当前类,无须定义返回值类型。但必须注意不要在构造方法里使用 return 来返回当前类的对象,因为构造方法的返回值是隐式的。

构造方法的语法格式如下:

class class_name {
    public class_name(){}    // 默认无参构造方法
    public ciass_name([paramList]){}    // 定义构造方法// 类主体
}

在一个类中,与类名相同的方法就是构造方法。每个类可以具有多个构造方法,但要求它们各自包含不同的方法参数。

构造方法主要有无参构造方法和有参构造方法两种,示例如下:

public class MyClass {
    private int m;    // 定义私有变量
    MyClass() {
        // 定义无参的构造方法
        m = 0;
    }
    MyClass(int m) {
        // 定义有参的构造方法
        this.m = m;
    }
}

该示例定义了两个构造方法,分别是无参构造方法和有参构造方法。在一个类中定义多个具有不同参数的同名方法,这就是方法的重载。这两个构造方法的名称都与类名相同,均为 MyClass。在实例化该类时可以调用不同的构造方法进行初始化。

注意:类的构造方法不是要求必须定义的。如果在类中没有定义任何一个构造方法,则 Java 会自动为该类生成一个默认的构造方法。默认的构造方法不包含任何参数,并且方法体为空。如果类中显式地定义了一个或多个构造方法,则 Java 不再提供默认构造方法。

二、一个标准的类

1.所有成员都要使用private修饰
2.为每一位成员编写get set方法
3.编写一个无参构造函数
4.编写一个有参构造函数

示例:

package jyg;

public class jyg08a1 {
    public static void main(String[] args) {
    	jyg08a2 stu1= new jyg08a2("jyg");
    	stu1.setAge(19);
    	System.out.println("我是"+stu1.getName()+"我已经"+stu1.getAge()+"岁");
    	
    	System.out.println("================");
    	
    	jyg08a2 stu2= new jyg08a2 ("zjl",40);
    	System.out.println("我是"+stu2.getName()+"我已经"+stu2.getAge()+"岁");
    	stu2.setAge(41);
    	System.out.println("我是"+stu2.getName()+"我已经"+stu2.getAge()+"岁");		   			
    }
}
package jyg;

public class jyg08a2{ 
	
		  private  String name;
		  private  int age; 
	
		  public jyg08a2(){
			 
		 }
		 
		   public jyg08a2(String name) {
		   super();
		   this.name= name;		 
		 }

		   public jyg08a2(String name,int age) {
			   super();
			   this.name= name;	
			   this.age= age;
			 }
		   public String getName() {
			   return name;		 
			 }
		   public void setName(String name) {
			   this.name=name;		 
			 }
		   public int getAge() {
			   return age;		 
			 }
		   public void setAge(int age) {
			   this.age=age;	 
			 }		 
		 
}

运行结果:

我是jyg我已经19================
我是zjl我已经40岁
我是zjl我已经41
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值