linkin大话面向对象--构造器详解

  
对象的产生格式:类名称  对象名 = new  类名称();

因为有(),所以是方法,实际上它就是构造方法,并且是非私有的构造方法。如:CellPhone cp = new CellPhone();


构造器是一个特殊的方法,这个特殊方法用于创建实例时执行初始化。构造器是创建对象的重要途径,即使使用工厂模式,反射等方式创建对象,其实质依然是依赖于构造器,因此,java类必须包含一个或者一个以上的构造器。一旦自己显示的写了构造方法,那么java就不再为我们提供那个隐式的无参构造方法了。

  特点:1,方法名与类名相同 2,不用定义返回值类型  3,不需要写return语句

作用:给类中的字段进行初始化,可以用来创建对象。
注意:多个构造方法是以重载的形式存在的。可以使用this在一个构造器中调用另外一个构造器。


构造器是创建java对象的途径,但不是说构造器完全负责创建java对象。实际上,当程序员调用构造器的时候,系统会先为该对象分配内存空间,并为这个对象执行默认初始化,这个对象在构造器执行前就已经完成了。所谓的调用构造器来new对象,不过就是将上面那个已经存在的对象作为构造器的返回值来返回,通常还会赋给另一个引用类型的变量,从而让外部程序可以访问这个对象。


通常建议为java类保留无参数的默认构造器,养成这种良好的习惯。
在软件开发中有一个规则,就是不要把相同的代码书写2次以上,充分的利用每一段代码,这样子可以让程序代码更加简洁,也可以降低软件的维护成本。



  •   setter方法和构造方法都可以用来初始化字段的值,那么什么时候用构造方法什么时候用setter?
 1,当字段的值是和类的对象紧密相关不可分割的时候,用构造方法,就是说我要有这个实例,就必须有这个字段值,就用构造方法。
 2,需要初始化的字段值不太多的时候可以用构造方法,如果字段值太多,构造方法的参数列表太。。。了。
 3,其他时候都可以用setter方法。

//测试构造器重载
public class ConstructorOverLoad {
    private String name;
    private int age;
    
  //默认的构造器
    public ConstructorOverLoad(){
        
    }
    
    public ConstructorOverLoad(String name){
        this.name = name;
    }
    
    public ConstructorOverLoad(String name,int age){
        //通过this调用另一个重载的构造器的初始化代码
        this(name);
        this.age = age;
    }
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public static void main(String[] args) {
        ConstructorOverLoad linkin = new ConstructorOverLoad();
        ConstructorOverLoad linkin1 = new ConstructorOverLoad("linkinPark");
        ConstructorOverLoad linkin2 = new ConstructorOverLoad("linkinPark",25);
    }
    
}

  • 如何写出一个设计很好的类?

分析思路:

根据要求写出类所包含的字段;
所有的字段都必须私有化;
封装之后的字段可通过setter和getter设值和取得;
按需求可添加若干构造方法;
根据需求可添加相应的方法;
类中的所有方法都不要直接处理(输出打印),而是交给调用者去处理。


你可能感兴趣的:(linkin大话面向对象--构造器详解)