Java构造方法和方法重载详解

目录
  • 第一 构造方法的作用
  • 第二 构造方法的特点
  • 方法重载
  • 总结

类的结构包括 :

1. 成员变量

2. 成员方法

3. 构造方法

4. 代码块

5. 内部类

第一 构造方法的作用

主要有以下三方面的作用:

(1)在构造方法中为创建的对象初始化赋值

(2)在创建一个对象的时候,至少需要调用一个构造方法

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

一个例子加深对以上三条的理解

public class Car{
    String name;
    String color;
    float price;
}

上一篇文章已经讲解过 name , color , price 三个都是类的成员变量,我们再创建一个类TextCar用来测试. 举个例子,现在先记住:

Car bm = new Car();

这句代码中Car()就是构造方法.所以也说明了(2)在创建一个对象的时候,至少需要调用一个构造方法.

public class TextCar{
    public static void main(String [] args){
        Car bm = new Car();  //给Car类创建(new)了一个对象
        System.out.println(bm.name);
    }
}

在main方法中未对name赋值,但运行结果如下:

不难发现,程序可以正常run并且name的值为null . 其实构造方法为成员变量赋了初值,即(1)的为创建的对象初始化赋值.构造方法赋初值如 : int类型 初值:0 , double类型 初值:0.0 ,String类型 初值 null 等等(常用的了解一下).

在public class Car{ } 这个类中看到的只有成员变量,没有成员方法,更没有看到构造方法. 其实,是因为我们没有显示的写书构造方法,类里面有一个隐式的默认的构造方法:

public class Car{
    String name;
    String color;
    float price;
    public Car(){    //默认的构造方法,也可以显示的写出来
        this.name = null;
        this.color = null;
        this.price = 0.0;
    }
}

public Car(){ }有这样一个隐式的无参的构造方法,只不过在上面的代码中,我们显示的写出来了,这也解释了 (3)每一个类都有构造方法.

到这里构造方法的知识点就梳理完了,欢迎大家评论区补充~

第二 构造方法的特点

构造方法的特点如下:

(1)名称和类名相同(这一点需要牢记)

(2)没有返回值

(3)不需要用void来修饰

public class Car{
   //里面有一个默认的无参构造方法Car(){   }
}

Car类里面的默认无参构造方法的名称也叫Car().

我们也可以定义有参的构造方法,如果定义一个有参的构造方法会把默认的构造方法覆盖掉.例如:

public class Car{
    String name;
    String color;
    float price;
    public Car(String name,String color,float price){
        this.name = name;
        this.color = color;
        this.price = price;
    }

}

此时默认的无参构造方法被覆盖掉.

如果刚开始接触java,对 this. 不理解,看一下这一段的简单解释:this表示的是对应的对象,一定可以在main方法中找到对应的对象如上一段的代码,一定可以找到这样的对象 : Car bm = new Car("宝马","黑色",5000000);(参量只要类型确定,想写什么读者随意),this就指的是这个对象, this . 后面的name表示的是Car类的成员变量name , 等号右边的name表示该构造方法的参数name.其余变量同理.最后,如果你觉得不好理解,可以把参数换个名字,如a,左边的this . 就可以去掉.但this的使用一定要会.

来一个完整的简单的代码,读者自己敲一下,然后给自己讲一下,就完全理解啦~

public class Car{
    String name;
    String color;
    float price;
    public Car(String name,String color,float price){
        this.name = name;
        this.color = color;
        this.price = price;
    }
    public run(){  //成员方法
        System.out.println("汽车行驶");
    }
}

public class TextCar{
    public static void main(String [] args){
        Car bm = new Car("宝马","红色",500000);  //给Car类创建(new)了一个对象
        System.out.println(bm.name+" "+bm.color+" "+500000);
        bm.run();
    }
}

方法重载

1.重载有什么特点

(1)在一个类中有多个方法名称相同的现象

(2)构造方法和成员方法都可以重载

(3)通过参数的个数,类型,类型的顺序进行区分是否为同一方法

方法重载涉及到一个覆盖的问题,如果重新定义传参的构造方法,需要把默认的无参构造方法显示的写出来,因为默认的已经被重载的覆盖掉,调用Car()时会报错!例如:

public Car(String name,String color,float price){
    this.name = name;
    this.color = color;
    this.price = price;
    public Car(String name,String color,float price){
        this.name = name;
        this.color = color;
        this.price = price;
    }

    public run(String name,String color){  //成员方法
        System.out.println(this.color+this.name+"汽车行驶");
    }
    public run(String color,String name){
        System.out.println(this.color+this.name+"汽车行驶");
    }
    public int run(String name){
        System.out.println(this.name+"汽车行驶");
        return 0;
    }
}
public class TextCar{
    public static void main(String [] args){
        Car dz = new Car();//创建了一个对象
        System.out.println(dz.name);
        Car bm = new Car("宝马","红色",500000);  //创建了一个对象
        System.out.println(bm.name+" "+bm.color+" "+500000);
        bm.run("红色","宝马");
        bm.run("宝马");
    }
}

因为Car()这个无参构造方法已经被有参的Car(String name,String color,float price)覆盖,new Car()时找不到无参构造方法.需要我们显示得把Car()定义出来才可以.

方法的重载,在Car类中有Car同名的构造方法,run()同名的构造方法,在类中使用重名的方法就是方法的重载,如果两个方法的名字和参数类型,数量,顺序都相同是不可以的,同名的方法需要考方法的参数类型,数量和顺序区分开来

总结

到此这篇关于Java构造方法和方法重载详解的文章就介绍到这了,更多相关Java构造方法 方法重载内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java重载构造原理与用法详解

    本文实例讲述了Java重载构造原理与用法.分享给大家供大家参考,具体如下: 带参数方法 [1]无参数,无返回值 void 方法名(){方法体:} [2]无参数,有返回值 int 方法名(){方法体:} [3]有参数,无返回值 void 方法名(int num){方法体:} [4]有参数,有返回值 int 方法名(int num){方法体:} 可变参数与数组参数的区别 [1]可变参数传参灵活,,可以无参,可以多个参数,可以数组:   数组参数只能传递数组 [2]可变参数必须放在最后   数组可以放

  • Java基础教程之构造器与方法重载

    在方法与数据成员中,我们提到,Java中的对象在创建的时候会初始化(initialization).初始化时,对象的数据成员被赋予初始值.我们可以显式初始化.如果我们没有给数据成员赋予初始值,数据成员会根据其类型采用默认初始值. 显式初始化要求我们在写程序时就确定初始值,这有时很不方便.我们可以使用构造器(constructor)来初始化对象.构造器可以初始化数据成员,还可以规定特定的操作.这些操作会在创建对象时自动执行. 定义构造器 构造器是一个方法.像普通方法一样,我们在类中定义构造器.构造

  • java构造器的重载实现实例讲解

    说到重载的问题,已经提过很多次了.我们可以把名称一致,但是内在参数不同的对象看成重载,可以说这些类的名称相同是很有迷惑性的.同时,构造器中装有许多的方法,那么构造器也是可以实现重载的功能.下面我们就构造方法格式.注意事项进行简单介绍,然后带来构造起的重载实例. 1.构造方法格式 public class 类名(){ 类名(String name); 类名 对象=new 类名(String name): } 2.注意事项 构造器必须与主类同名 构造器可以有参数 构造器可以重载 没有返回值 不添加构

  • Java基础第三篇 构造器与方法重载

    目录 1.定义构造器 2.初始化方法的优先级 3.方法重载 4.总结 在方法与数据成员中,我们提到,Java中的对象在创建的时候会初始化(initialization).初始化时,对象的数据成员被赋予初始值.我们可以显式初始化.如果我们没有给数据成员赋予初始值,数据成员会根据其类型采用默认初始值.显式初始化要求我们在写程序时就确定初始值,这有时很不方便.我们可以使用构造器(constructor)来初始化对象.构造器可以初始化数据成员,还可以规定特定的操作.这些操作会在创建对象时自动执行 1.定

  • Java 重载、重写、构造函数的实例详解

    Java 重载.重写.构造函数的实例详解 方法重写 1.重写只能出现在继承关系之中.当一个类继承它的父类方法时,都有机会重写该父类的方法.一个特例是父类的方法被标识为final.重写的主要优点是能够定义某个子类型特有的行为. class Animal { public void eat(){ System.out.println ("Animal is eating."); } } class Horse extends Animal{ public void eat(){ Syste

  • Java构造方法和方法重载详解

    目录 第一 构造方法的作用 第二 构造方法的特点 方法重载 总结 类的结构包括 : 1. 成员变量 2. 成员方法 3. 构造方法 4. 代码块 5. 内部类 第一 构造方法的作用 主要有以下三方面的作用: (1)在构造方法中为创建的对象初始化赋值 (2)在创建一个对象的时候,至少需要调用一个构造方法 (3)每一个类都有构造方法 一个例子加深对以上三条的理解 public class Car{ String name; String color; float price; } 上一篇文章已经讲解

  • Java基础之方法重写详解

    一.java方法重写 方法的重写是子类根据需求对父类继承的方法进行重新的编写,在重写时,可以使用super方法的方式来保留父类中的方法,注意:构造方法不可以被重写. 创建一个人类,属性包括姓名 性别 年龄 行为方法是输出信息 二.super关键字 方法重写时要在子类中定义一个和父类相同名称的方法,并采用super关键字super.方法名();,这样就实现了方法的重写 package cn.zhz.Kind.dh; public class Person1 { public String sex;

  • Java 逻辑结构与方法函数详解刨析

    ⭐前言⭐ 本文主要介绍JavaSE的逻辑结构和方法. 对一门编程语言逻辑结构和方法的理解是站在C语言之上的,建议配套C语言版本的分析一起食用 链接直达:

  • java金钱处理方法实例详解

    java金钱处理方法实例详解 在支付行业中,涉及到对金钱的处理比较多.比如分转化成元.费率计算.手续费计算等等. 1.分转化成元 /** * 单位换算:分->元 * * @param amount * 分 * @param scale * 保留小数点位数 * @return */ public static String fenToYuan(long amount, int scale) { return new BigDecimal(amount).divide(new BigDecimal(

  • Java身份证验证方法实例详解

    Java身份证验证方法实例详解 身份证号码验证 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码, 八位数字出生日期码,三位数字顺序码和一位数字校验码. 2.地址码(前六位数) 表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行. 3.出生日期码(第七位至十四位) 表示编码对象出生的年.月.日,按GB/T7408的规定执行,年.月.日代码之间不用分隔符. 4.顺序码(第十五位至十七位) 表示在同

  • Java Collections.shuffle()方法案例详解

    Java.util.Collections类下有一个静态的shuffle()方法,如下: 1)static void shuffle(List<?> list)  使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的. 2)static void shuffle(List<?> list, Random rand) 使用指定的随机源对指定列表进行置换,所有置换发生的可能性都是大致相等的,假定随机源是公平的. 通俗一点的说,就像洗牌一样,随机打乱原来的顺序. 注意:如果给

  • java compare compareTo方法区别详解

    1,compareTo(Object o)方法是java.lang.Comparable<T>接口中的方法,当需要对某个类的对象进行排序时,该类需要实现Comparable<T>接口的,必须重写public int compareTo (T o)方法,比如MapReduce中Map函数和Reduce函数处理的<key,value>,其中需要根据key对键值对进行排序,所以,key实现了WritableComparable<T>接口,实现这个接口可同时用于序列

  • TypeScript中的方法重载详解

    前言 方法重载(overload)在传统的静态类型语言中是很常见的.JavaScript 作为动态语言, 是没有重载这一说的.一是它的参数没有类型的区分,二是对参数个数也没有检查.虽然语言层面无法自动进行重载,但借助其动态的特性,我们可以在代码中手动检查入参的类型,或者通过 arguments 获取到参数个数,从而实现根据不同的入参做不同的操作. 比如有一个获取聊天消息的方法,根据传入的参数从数组中查找数据.如果入参为数字,则认为是 id,然后从数据源中找对应 id 的数据并返回,否则当成类型,

  • Java中equals()方法实例详解

    目录 equals()在哪里 Java中重写的equals() 在Java中比较的推荐方法 为什么要在我们自己的类中重写equals() 重写equals()的规范 重写equals()可能的误区 一般的equals()写法 附:java中equals()方法的正确使用 总结 equals()在哪里 首先我们知道Java中Object类是所有类的父类,它里面定义了equals()方法: public boolean equals(Object obj) { return (this == obj

  • JAVA多线程之方法 JOIN详解及实例代码

    JAVA多线程 JOIN 对于Java开发人员,多线程应该是必须熟练应用的知识点,特别是开发基于Java语言的产品.本文将深入浅出的表述Java多线程的知识点,在后续的系列里将侧重于Java5由Doug Lea教授提供的Concurrent并行包的设计思想以及具体实现与应用. 如何才能深入浅出呢,我的理解是带着问题,而不是泛泛的看.所以该系列基本以解决问题为主,当然我也非常希望读者能够提出更好的解决问题的方案以及提出更多的问题.由于水平有限,如果有什么错误之处,请大家提出,共同讨论,总之,我希望

随机推荐