构造方法/构造器
构造方法又叫构造器(constructor),是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。
基本语法
修饰符 方法名(形参列表){
方法体;
}
a) 构造器的修饰符可以是默认的,也可以是public 、protected 、private
b) 构造方法没有返回值
c) 方法名 和 类名 必须一样
d) 参数列表 和 成员方法一样的规则
e) 构造器的调用由系统完成,也就是说在创建对象时,系统会自动的调用该类的构造器完成对对象的初始化
练习:在创建人类对象时,使用构造器直接指定人类对象的年龄和姓名
public class Constructor01 { public static void main(String[] args){ //当new一个对象时,直接通过构造器指定名字和年龄 Person3 p = new Person3("马铃薯", 26); System.out.println("name = " + p.name + "\tage = " + p.age); } } //在创建人类的对象时,就直接指定这个对象的年龄和姓名 class Person3{ //属性(成员变量,全局变量) String name; int age; //构造器,完成对新对象的初始化 //1. 构造器没有返回值,也不能写void //2. 构造器的名称和类Person一样 //3. (String pName, int pAge) 是构造器的形参列表,规则和成员方法一样 public Person3(String pName, int pAge){ System.out.println("====构造器被调用,完成对象的初始化====="); name = pName; age = pAge; } }
构造器的注意事项和使用细节
1) 一个类可以定义多个不同的构造器,即构造器重载
public class ConstructorDetail { public static void main(String[] args){ Person4 p1 = new Person4("马铃薯", 26); Person4 p2 = new Person4(26, "马铃薯"); } } class Person4{ //属性(成员变量,全局变量) String name; int age; //第一个构造器 public Person4(String pName, int pAge){ System.out.println("====第1个构造器被调用,完成对象的初始化====="); name = pName; age = pAge; } //第二个构造器 public Person4(int pAge, String pName){ System.out.println("====第2个构造器被调用,完成对象的初始化====="); age = pAge; name = pName; } }
2) 构造器名和类名必须相同
3) 构造器没有返回值
4) 构造器是完成对象的初始化,并不是创建对象
5) 在创建对象时,系统会自动的调用该类的构造方法
6) 当没有定义构造方法时,系统会自动给类生成一个默认的无参构造方法(也叫默认构造方法)
public class Constructor02 { public static void main(String[] args){ //当创建对象时就是调用默认的构造方法 Dog d = new Dog(); } } class Dog{ //如果程序员没有定义构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器) //使用javap指令,反编译看看 /* 默认构造器 Dog{ } */ }
7) 定义了自己的构造器,默认的构造器就覆盖了,不能再使用默认的无参构造器,要使用需要显式定义一下(这点很重要)
public class Constructor03 { public static void main(String[] args){ //使用默认的无参构造器 Dog2 d = new Dog2(); } } class Dog2{ String name; //定义了自己的构造器,默认的构造器就覆盖了 //需要显示定义 public Dog2(){ } //自己定义构造器 public Dog2(String dName){ name = dName; } }
标签:String,构造方法,构造,name,面向对象,默认,public,14 From: https://www.cnblogs.com/REN-Murphy/p/17604944.html