-
使用new+构造方法 创建一个新的对象
-
构造方法是定义在Java类中的一个用来初始化对象的方法
构造方法与类同名 且没有返回值 -
无参构造方法的使用
public class Telephone { public Telephone() { System.out.println("无参的构造方法执行了"); } }
在main方法中,用无参的构造方法 new 一个新的对象
public static void main(String[] args) { Telephone phone = new Telephone();//当Telephone类中,没有写构造方法,系统将会帮我们自动创建一个无参的构造方法 }
运行结果是:
无参的构造方法执行了
-
有参构造方法的使用
用有参构造方法创建对象,其实就是为了初始化成员变量的值
// 有参的构造方法可以和无参的构造方法并存的! public Telephone(float screen, float cpu, float mem) { this.screen = screen; this.cpu = cpu; this.mem = mem; System.out.println("有参的构造方法执行了"); }
用有参的构造方法和无参的构造方法分别 创建一个对象public class InitialTelephone { public static void main(String[] args) { //通过无参的构造方法创建对象 Telephone phone1 = new Telephone();//当Telephone类中,没有写构造方法,系统将会帮我们自动创建一个无参的构造方法 //通过有参的构造方法创建对象,并给对象中的属性赋初值 Telephone phone2 = new Telephone(5.8F, 2.4F, 4.0F); } }
运行结果:
无参的构造方法执行了 有参的构造方法执行了
-
当没有指定构造方法时,系统会自动添加无参的构造方法
-
当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法
-
构造方法的重载:方法名相同,但参数不同的多个方法,调用时会根据不同的参数选择相应的方法
-
构造方法不但可以给对象的属性赋值,但可以保证给对象的属性赋一个合理的值
比如:
public Telephone(float screen, float cpu, float mem) { //可以在构造方法中判断传入属性的 参数合理性:如果传入的screen参数值<4.0F,将自动赋值4.0F;赋值>=4.0F时,则正常将参数值赋值给属性screen if (screen < 4.0F) { System.out.println("您输入的参数有问题,自动赋值4.0"); this.screen = 4.0F; } else { this.screen = screen; } this.cpu = cpu; this.mem = mem; System.out.println("手机屏幕大小:"+this.screen+"英寸"+" CPU最大主频是:"+this.cpu+"GHz"+" 内存的大小是:"+this.mem+"G"+" 有参的构造方法执行了"); }
创建一个传入参数不合理的对象:
Telephone phone = new Telephone(2.8F, 2.4F, 4.0F);//传入屏幕大小2.8F<4.0F
运行结果是:
您输入的参数有问题,自动赋值4.0 手机屏幕大小:4.0英寸 CPU最大主频是:2.4GHz 内存的大小是:4.0G 有参的构造方法执行了
转载于:https://my.oschina.net/u/3421709/blog/883610