或许你也曾经疑问,java的类是怎样new出来的
那么就与本文的构造器有关,构造器也就是构造方法
new的原理就是通过类的构造方法,而我们写类的时候如果没有写构造器,java会自动生成构造器,并且与类名是一致的
比如很简单的一个demo
public class demo { private int age; public void printAge(){ System.out.println(age); }
其实它的构造函数已经有了,就是下面这种形式
public class demo { public demo(){}; //自动生成的 private int age; public void printAge(){ System.out.println(age); }
public的demo类构造就是public的demo默认构造方法
而class T0这只无修饰符的呢 ? 它就是默认T0(){};
所以默认的构造方法与类的修饰符一致,与类名一致
当然最常见的就是手动写构造那定义功能(默认构造就会无效)。如下
(也可通过编辑器的IDEA等工具自动生成)
public class demo { public demo(int age) { this.age = age; } private int age;
这样的好处就是在new的时候就能给属性赋不同的值,如
package yichang; public class demo { public demo(int age) { this.age = age; } private int age; public void printAge(){ System.out.println(age); } }
package yichang; public class test1 { public static void main(String[] args) { demo p =new demo(5); p.printAge(); } }
可以不用set一样可以了
或者 直接赋值,这样写的话new出来的对象就是直接有值的
public class demo { public demo() { age=6; } private int age;
既然现在已经了解了构造方法了
既然是方法,那么肯定也能重载(重载就是同名的方法,不同的参数)
package yichang; public class demo { public demo(){} public demo(int age) { this.age = age; } public demo(int age, String name) { this.age = age; this.name = name; } private int age; private String name; }
这样的好处是什么呢,就是对象创建的时候可以考虑不同的参数。
方便调用,提供多个对象模板。