(Java)构造方法

上节的封装性发现实例化一个类的对象之后,如果为这个对象中的属性赋值,必须通过 setter() 方法才可以

实际上可以通过构造方法来完成这样的操作,构造方法最主要的作用就是为类中的属性初始化

一、构造方法

class 类名称{
	访问权限 类名称(类型1 参数1,类型2 参数2,...){
	程序语句;
	... //构造方法没有返回值
	}
}

注意

1)构造方法的名称必须与类名称一致
(2)构造方法的声明不能有任何返回值类型的声明
(3)不能在构造方法中使用 return 返回一个值

关于访问权限
default(默认什么都不做),private,public,这3种都可以使用

只要是类就存在构造方法,在 Java中如果一个类中没有明确的声明一个构造方法则在编译的时候会直接生成一个无参数的、什么都不造的构造方法

class Person{
    private String name;
    private int age;
    public Person(String name,int age){ //定义构造方法为属性初始化
        this.setName(name); //为 name 属性赋值
        this.setAge(age);   //为 age 属性赋值
    }
    public void tell(){
        System.out.println("name: " + name + "\t"+ "age: " + age);
    }
    public String getName(){ // 取得姓名
        return name;
    }

    public void setName(String name) { //设置姓名
        this.name = name; // this.方法名称 表示强调是本类中的方法
    }

    public int getAge() {   //取得年龄
        return age;
    }

    public void setAge(int age) {   //设置年龄
        this.age = age;
    }
}
public class Test{
    public static void main(String[] args) {
        Person per = new Person("java",30);
        per.tell();
    }
}

在一个类中如果已经明确的声明了一个构造方法,那么程序编译时将不会再生成磨人的构造方法,即一个类中至少会存在有一个构造方法

二、构造方法的重载

与普通方法一样,构造方法也是可以重载的,由于构造方法名称本身要求与类名称保持一致,所以只要每个构造方法的参数类型或参数个数不同,就可以实现重载了

class Person{
    private String name;
    private int age;
    public Person(){} //定义无参构造
    public Person(String name){ //定义构造为name属性赋值
        this.setName(name);
    }
    public Person(String name,int age){ //定义构造方法为属性初始化
        this.setName(name); //为 name 属性赋值
        this.setAge(age);   //为 age 属性赋值
    }
    public void tell(){
        System.out.println("name: " + name + "\t"+ "age: " + age);
    }
    public String getName(){ // 取得姓名
        return name;
    }

    public void setName(String name) { //设置姓名
        this.name = name; // this.方法名称 表示强调是本类中的方法
    }

    public int getAge() {   //取得年龄
        return age;
    }

    public void setAge(int age) {   //设置年龄
        this.age = age;
    }
}
public class Test{
    public static void main(String[] args) {
        Person per = new Person("java");
        per.tell();
    }
}

在一个类中构造方法重载时,所有的重载方法按照参数的个数由多到少,或者是由少到多排列。
例如:

public Person(){}
public Person(String name){}
public Person(String name,int age){}

或者

public Person(String name,int age){}
public Person(String name){}
public Person(){}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南淮北安

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

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

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

打赏作者

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

抵扣说明:

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

余额充值