1.构造方法是一种特殊的方法,专门用于构造/实例化对象,构造方法根据是否有参数分为无参构造和有参构造jvm
无参构造优化
无参构造方法就是构造方法没有任何参数。构造方法在建立对象(new Dog())调用,无参构造方法中通常用于给属性赋值默认值。spa
public class Dog{对象
String name;blog int health;ci int love;作用域 String strain;开发
public Dog(){table System.out.println("构造方法");class health = 100; love = 0; } … } |
若是开发中没有定义无参构造方法,jvm默认给类分配一个无参构造,形如
public Dog(){ } |
有参构造
当构造/实例化一个对象时,能够向构造方法中传递参数,这样的构造方法称为有参构造。
1. 局部变量和成员变量优先级
若是在一个做用域中,局部变量和成员变量同名,局部变量的优先级更高。
public class Dog{
String name; int health; int love; String strain;
public Dog(String name,int health,int love,String strain){ name = name; health = health; love = love; strain = strain; } } |
优化后
public class Dog{
String name; int health; int love; String strain;
/* public Dog(){ System.out.println("构造方法"); health = 100; love = 0; } */
public Dog(String _name,int _health,int _love,String _strain){ name = _name; health = _health; love = _love; strain = _strain; }
public void showInfo(){ System.out.print("个人名字叫"+name); System.out.print(",健康值"+health); System.out.print(",亲密度"+love); System.out.println(",我是一只"+strain); } } |
有参构造和无参构造是方法重载关系。
1. 有参构造常见问题
若是一个类提供了有参构造方法,jvm不在给类默认分配无参构造。
public class Dog{
String name; int health; int love; String strain;
/* public Dog(){ System.out.println("构造方法"); health = 100; love = 0; } */
public Dog(String _name,int _health,int _love,String _strain){ name = _name; health = _health; love = _love; strain = _strain; }
public void showInfo(){ System.out.print("个人名字叫"+name); System.out.print(",健康值"+health); System.out.print(",亲密度"+love); System.out.println(",我是一只"+strain); } } |
Dog dog = new Dog(); dog.name = name; dog.health = 100; dog.love = 0; dog.strain = strain; |
|
总结:
在开发过程当中,若是开发者提供了有参构造方法,必定要习惯性的提供无参构造。