• Java 面向对象(六)类的成员 之 构造器(构造方法)


    一、构造器

      构造器又称构造方法,是为了创建对象和初始化对象所产生的。

    二、构造器的特征

      1、它具有与类相同的名称。

      2、它不声明返回值类型。(与声明为 void 不同)

      3、不能与 static、final、synchronized、abstract、native 修饰,不能有 return 返回值;

    三、构造器的作用

      作用:

        (1)构造对象,创建对象,和 new 一起使用,每次调用它就是在创建新的对象

       (2)当一个对象被创建时,构造方法用来初始化对象,给对象的成员变量赋初始值

        注意:当自己没有定义构造方法时,Java 自动提供了一个无参数的构造方法,所有的类都有构造方法。一旦自己定义了构造方法,Java将不再提供构造方法。

    四、构造器的语法

      语法格式:

    修饰符  构造方法名/类名(【参数列表】){

      初始化语句;

    }

      举例:

     1 public class Animal {
     2     private int legs;
     3     
     4     //构造器
     5     public Animal() {
     6         legs = 4;
     7     }
     8     public void setLegs(int i) {
     9         legs = i;
    10     }
    11     public int getLegs() {
    12         return legs;
    13     }
    14 }

      创建 Animal  类的实例:Animal a = new Animal();

      调用构造器,将 legs初始化为4。

    五、构造器的细节

      根据参数不同,构造器可以分为如下两类:

      •   隐式无参构造器(系统默认提供)
      •   显示定义一个或多个构造器(无参、有参)

      1、如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器。

      2、一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器。

      3、一个类中定义的多个构造器,彼此构成重载

      4、一个类中,至少会有一个构造器。

      5、默认构造器的修饰符与所属类的修饰符一致。

      6、父类的构造器不可被子类继承。

      7、构造方法的名称必须与类名相同,且构造方法没有返回值类型,也不写 void。

      8、构造方法不能return一个具体的返回值。

    六、构造器的重载

      1、构造器一般用来创建对象的同时初始化对象。

    1 class Person{
    2    String name;
    3    int  age;
    4    public Person(String n, int a) {
    5          name = n;
    6          age = a;
    7    }  
    8 }

      2、构造器重载使得对象的创建更加灵活,方便创建各种不同的对象。

        构造器重载举例:

    1 public class Person{
    2     public Person(String name, int age, Date d) {this(name,age);…}
    3     public Person(String name, int age) {…}
    4     public Person(String name, Date d) {…}
    5     public Person(){…}
    6 }

      3、构造器重载,参数列表必须不同。

        Demo:

        

    七、属性赋值过程

      在创建对象的时候,在很多位置都可以对类的属性赋值。现总结这几个位置,并指明赋值的先后顺序。

      赋值的位置: 

    ① 默认初始化

    ② 显式初始化

    ③构造器中初始化

    ④ 通过“对象.属性” 或 “对象.方法” 的方式赋值

      赋值的先后顺序:① -> ② -> ③ -> ④

  • 相关阅读:
    最优贸易 NOIP 2009 提高组 第三题
    Think twice, code once.
    luogu P1378 油滴扩展
    codevs 1002 搭桥
    codevs 1014 装箱问题 2001年NOIP全国联赛普及组
    洛谷P2782 友好城市
    洛谷P1113 杂务
    [HDU1848]Fibonacci again and again
    [POJ2420]A Star not a Tree?
    [SCOI2010]生成字符串
  • 原文地址:https://www.cnblogs.com/niujifei/p/13771306.html
Copyright © 2020-2023  润新知