关键词搜索

源码搜索 ×
×

(Java)构造方法

发布2019-10-25浏览524次

详情内容

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

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

一、构造方法

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

    注意

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

    关于访问权限
    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();
        }
    }
    
      7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

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

    二、构造方法的重载

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

    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();
        }
    }
    
      7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

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

    public Person(){}
    public Person(String name){}
    public Person(String name,int age){}
    
    • 1
    • 2
    • 3

    或者

    public Person(String name,int age){}
    public Person(String name){}
    public Person(){}
    
    • 1
    • 2
    • 3

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载