面向对象-类的构造方法(函数)
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.构造方法概述
构造方法特点:
(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("年龄非法!"); } } }
/** * * @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(); } }