zoukankan      html  css  js  c++  java
  • 什么叫构造方法?

    构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。

    定义:在Java中,任何 变量在被使用前都必须先设置初值.Java提供了为类的 成员变量赋初值的专门方法。

    特殊性:构造方法是一种特殊的成员方法,它的特殊性反映在如下几个方面:

    1.构造方法作用:(1).构造出来一个类的实例 (2).对构造出来个一个类的实例(对象)初始化。

    2.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。

    3.主要完成对象的初始化工作,构造方法的调用是在创建一个对象时使用new操作进行的。

    4.类中必定有构造方法,若不写,系统自动添加无参构造方法。接口不允许被实例化,所以接口中没有构造方法。

    5.不能被static、final、synchronized、abstract和native修饰。

    6.构造方法在初始化对象时自动执行,一般不能显式地直接调用.当同一个类存在多个构造方法时,java编译系统会自动按照初始化时最后面括号的参数个数以及参数类型来自动一一对应。完成构造函数的调用。

    7.构造方法分为两种:无参构造方法 有参构造方法

    构造方法可以被重载。没有参数的构造方法称为 默认构造方法,与一般的方法一样,构造方法可以进行任何活动,但是经常将他设计为进行各种初始化活动,比如初始化对象的属性。

    8.构造代码块:   (1)作用:给对象进行初始化,对象一建立就执行,而且优先于构造函数执行   (2)构造代码块和构造函数的区别:   构造代码块是给所有不同对象的共性进行统一初始化,构造函数是给对应的对象进行初始化

    9.子类继承父类中,   ***子类的实例化过程   ***构造方法不能被子类继承   ***子类创建对象时,会先去创建父类的对象。   默认是去调用父类的无参构造方法。   ***子类构造方法中,第一行默认是super()   ***为什么子类中第一行会默认有super()   因为他继承父类的成员使用,使用前这些成员必须初始化,   而他们是父类的成员,所以,必须通过父类进行初始化。   所以,会先创建一个父类的对象。   **当父类没有无参构造方法时

    必须使用this或者super调用其他的构造方法。

    10.自定义类中,如果不写构造方法,java系统会默认添加一个无参的构造方法。如果写了一个有参的构造方法,就一定要写无参构造方法。   如果想使用无参的构造方法,就必须手动给出无参构造方法。   建议:一般情况下,我们自定义的类都要手动给出无参构造方法。

    具体使用:分别计算长、宽为20、10和6、3的两个长方形的面积。

    class RectConstructor{
    
    double length;
    
    double width;
    
    double area(){
    
    return length*width;
    
    }
    
    RectConstructor(double width,double length){//带参数的构造方法
    
    this.length=length;
    
    this.width=width;
    
    }
    
    }
    
    public class RectDemo{
    
    public static void main(String args[]) {
    
    RectConstructor rect1=new RectConstructor(10,20);
    
    RectConstructor rect2=new RectConstructor(3,6);
    
    double ar;
    
    ar=rect1.area();
    
    System.out.println("第一个长方形的面积是"+ar);
    
    ar=rect2.area();
    
    System.out.println("第二个长方形的面积是"+ar);
    
    }
    
    }

    控制台输出结果为:

    第一个长方形的面积是200

    第二个长方形的面积是18

  • 相关阅读:
    20160813上午训练记录
    [bzoj 2159]Crash的文明世界
    【娱乐】高端小游戏Manufactoria
    【教程】如何正确的写一个Lemon/Cena的SPJ(special judge)
    [CF]codeforces round#366(div2)滚粗记
    洛谷 [P3265] 装备购买
    POJ 1830 开关问题
    洛谷 [P4035] 球形空间生成器
    BZOJ 2973 入门OJ4798 石头游戏
    洛谷 [P1939] 矩阵加速数列
  • 原文地址:https://www.cnblogs.com/0927wyj/p/5031005.html
Copyright © 2011-2022 走看看