面向对象-类的构造方法(函数)

         面向对象-类的构造方法(函数)

                             作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

一.构造方法概述

  构造方法特点:
    (1)函数名与类名相同
    (2)不用定义返回值类型
    (3)不需要写return语句(没有具体的返回值)
    (4)在对象建立的时候被直接调用
    (5)
多个构造函数是以重载的形式存在的
  构造方法作用:
    构造函数在对象建立的时候会被直接调用,它一般用作给对象做初始化操作(类似于我们生活中所说的出厂配置)。

  类构造方法和普通方法的区别:
    普通方法时用于定义对象应该具备的功能,而构造方法定义的是对象在建立时需要具备的一些内容,也就是对象的初始化内容。
    普通方法在对象建立后需要显式调用才会执行,而构造方法是在对象建立时被调用,为了给对象进行初始化。

 

二.this关键字概述

this的特点:
this代表其所在函数所属对象的引用,换句话说,this代表类对象的引用。

this的应用常见:
针对局部变量和成员变量同名的时候。

this关键字在构造函数间的引用:

 

三.实战案例

/**
 * 
 * @author 尹正杰
 *
 */
public class Person {
    
    private String name;
    private int age;
    
    /*
     * 构造函数细节:
     *     (1)构造函数在对象建立的时候会被直接调用,它一般用作给对象做初始化操作(类似于我们生活中所说的出厂配置);
     *     (2)当类中没有定义构造函数时,JVM会自动给该类加上一个空参数的构造函数,这个是类中默认的构造函数;
     *     (3)在一个类中可以以重载的方式定义多个构造函数,因为重载时构造函数的名称都相同。
     * 
     */
    Person(){
        System.out.println("Person1 正在初始化...");
    }
    
    Person(int age){
        this.age = age;
        System.out.println("Person2 正在初始化...");
    }
    
    /*
     * this关键字在构造函数间调用时只能定义在构造函数的第一行
     */
    Person(String name){
        this(17);
        this.name = name;
        System.out.println("Person3 正在初始化...");
    }
    
    Person(String name,int age){
        this.name = name;
        if(age > 0 && age <= 150) {
            this.age = age;
            System.out.println("Person4 正在初始化...");
        }else {
            System.out.println("年龄非法!");
        }
        
    }

    
    public void sayHello() {
        System.out.println("My name is [" + this.getName() + "],and I'm " + this.getAge() + " years old.");
    }
    
    //为私有变量定义getter和setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(short age) {
        if(age > 0 && age <= 150) {
            this.age = age;
        }else {
            System.out.println("年龄非法!");
        }
        
    }

}
定义Person类(Person.java)
/**
 * 
 * @author 尹正杰
 *
 */
public class PersonDemo {

    public static void main(String[] args) {
        String name1 = "Jason Yin";
        String name2 = "尹正杰";
        String name3 = "Jason Yin 最强王者";
        String name4 = "BigData";
        
        short age1 = 28, age2 = 18, age3 = 26,age4 = 16;
        
        Person p1 = new Person();
        p1.setName(name1);
        p1.setAge(age1);
        
        Person p2 = new Person(age2);
        p2.setName(name2);
        p2.setAge(age2);
        
        Person p3 = new Person(name3);
        
        Person p4 = new Person(name4,age4);
        
        p1.sayHello();
        p2.sayHello();
        p3.sayHello();
        p4.sayHello();
        
        
    }
}

 

posted @ 2020-01-23 21:40  JasonYin2020  阅读(221)  评论(0编辑  收藏  举报