java构造器

来源:互联网 发布:淘宝偷图会有什么后果 编辑:程序博客网 时间:2024/06/11 20:49

   引用:初始化和清理(之后再说清理)是涉及安全的两个重要问题。许多程序的错误都是由于忘记初始化变量。C++引入了构造器constructor,这是一个特殊方法:当创建对象是自动调用此方法。为了确保操作对象前,它已经初始化了,java也采用了构造器。

   构造器又可以称为:构造函数、构造方法。
   特点:

     (1)方法名和类名相同;

     (2)没有返回值,并不是返回值为空;

     (3)每个类都至少有一个构造方法。

示例:

public class Animal{      Animal(){            System.out.println("Animal()");      }}
Animal.java中Animal()就是一个构造方法。它与“每个方法首字母小写”的编码风格不同。 

    也许你可能会发现自己平常创建的一个类里面并没有构造方法,但这并不是上面第三个特点是错误的。

class Animal{}public class Default{      public static void main(String[] args){            Animal d =new Animal();      }}

Animal类中并没有构造器,但是newAnimal()创建了一个新对象。这是因为如果你写的类中没有构造器,编译器会自动帮你创建一个默认构造器。

    默认构造器(又叫无参构造器)是没有形式参数的的构造器——它的作用是帮助我们创建一个对象。当我们显示的定义了一个构造器(不管是无参的还是有参的),编译器都不会再帮你自动创建默认构造器。

    既然有构造器,当然也有 有参构造器了。

public class Animal{      String type;      int age;      Animal(){           System.out.println("Animal()");      }      Animal(string type){           this.type=type;           System.out.println("Animal(type)"+type);      }       Animal(int age){           this.age=age;           System.out.println("Animal(age)"+age);      }       Animal(string type,int age){           this.type=type;           this.age=age;           System.out.println("Animal()type"+type+"age"+age);      }}

上面Animal类中有四个构造方法,(方法的重载)。我们可以根据不同的需求调用不同的构造方法,创建自己想要的对象。上述的方法我们可以在一个构造器中调用另一个构造器。我们可以这样:

Animal(string type,int age){     this(type);     //this(age); 在一个构造器中只能调用一个构造器,不能调用两个。     this.age=age;     //this(type);并且构造器必须置于最起始处,放在这里会编译出错的。     System.out.println("Animal()type"+type+"age"+age);}

父类和子类构造器

先看一个例子:

 

class Person{    Person(){System.out.println("我是个人。");}}class Flower{    Flower(){System.out.println("我是一朵花。");}}class Man extends Person{    Man(){System.out.println("我是个帅哥。");}}public class Boy extends Man{    private Flower f =new Flower();    Boy(){System.out.println("我是个小男孩。");}    public static void main(String[] args){       new Boy();    }}输出:我是个人。我是个帅哥。我是一朵花。我是个小男孩。
上述代码调用构造器的顺序是:

1 调用基类构造器。这个步骤会不断反复递归下去。所以先输出的是Person中的内容然后是Man。

2 按声明顺序调用成员的初始化方法。初始化Flower输出“我是一朵花。”

3 调用导出类构造器的主体。

构造器的调用顺序非常重要。一定要记住。。。。


构造器和其他方法的区别:

     1)构造器没有任何修饰符,方法又许多(final、public、protected等) 
        2)返回类型也是非常重要的。方法能返回任何类型的值或者无返回值(void),构造器没有返回值,也不需要void 
        3)两者的命名。构造器使用和类相同的名字,而方法则不同。按照习惯,方法通常用小写字母开始,而构造器通常用大写字母开始。构造器通常是一个名词,因为它和类名相同;而方法通常更接近动词,因为它说明一个操作。

0 0
原创粉丝点击