javaSE-构造方法Method、方法重载overload

一、java方法概述:

  • 方法是一段普通的代码片段,并且这段代码可以完成某个特定的功能,而且可以被重复的调用/使用;
  • java中的方法又叫做method,只要是可以独立出来的功能,我们都可以定义为单独的一个方法来完成,如果以后需要使用此功能时直接调用这个方法就行了;
  • 不要把所有的代码都扔到main方法当中,这样会导致程序的“复用性”很差;

二、构造方法constructor:

  • 表达式:public 构造方法名 (形式参数列表) {  }
  • 调用构造方法:使用new运算符来调用构造方法。语法格式:new 构造方法名(实际参数列表);
  • 【构造方法/ 构造器】 1、“ 方法名” “  类名”  完全一致(包含大小写 )2、没有任何返回类型  3、没有void(写上void就是普通方法,不是构造方法);
  • 缺省构造器:当一个类没有提供任何构造方法,系统会默认提供一个无参数构造方法,当显示定义构造方法后,系统则不再提供无参数构造方法,
  • 建议手动的将无参数构造方法写上,因为不写无参数构造方法,这个默认的构造方法很有可能就不存在,无参数构造方法使用的频率较高

三、方法重载overload:

  • 方法重载定义以下条件需要同时满足:
  • 条件1:在同一个类当中;
  • 条件2:构造方法名相同
  • 条件3:参数列表不同:参数的个数不同算不同;参数的类型不同算不同;参数的顺序不同算不同
  • 方法重载:在同一个类中, 允许存在一个以上的同名方法, 只要它们的参数个数或者参数类型不同即可。
  • 方法重载特点:与返回值类型无关, 只看方法名和参数列表在调用时, 虚拟机通过参数列表的不同来区分同名方法
  • 构造方法是支持重载的;在一个类中构造方法可以有多个;并且所有的构造方法名字都是一样的

四、引用:

  • 引用就是一个变量,该变量中存储的是java对象的内存地址
  • Date time1 = new Date(2008);,实际上time1变量中存储的并不new出来的这个字符串,因为time1是一个引用,那time1中必然存储的是2008字符串对象的内存地址。
/**
*构造方法是支持重载机制的,具体调用哪个构造方法,那要看调用的时候传递的实际参数列表符合哪个构造方法了。
*构造方法虽然在返回值类型方面不写任何类型,但它执行结束之后实际上会返回该对象在堆内存当中的内存地址,
*这个时候可以定义变量接收对象的内存地址,这个变量就是“引用”;
*time1 就是一个:引用

*/

public
class Date { int year; // int month; // int day; ////构造方法(无参数构造方法) public Date(){ System.out.println("Date类无参数构造方法执行"); } //构造方法(有参数构造方法) public Date(int year1){ System.out.println("带有参数year的构造方法"); } //构造方法(有参数构造方法) public Date(int year1 , int month1){ System.out.println("带有参数year,month的构造方法"); } //构造方法(有参数构造方法) public Date(int year1 , int month1 , int day1){ System.out.println("带有参数year,month,day的构造方法"); } }

public class DateTest {
    public static void main(String[] args) {
        System.out.println("main begin");
        Date time1 = new Date();
        System.out.println(time1);
        Date time2 = new Date(2008);
        System.out.println(time2);
        Date time3 = new Date(2008 , 8);
        System.out.println(time3);
        Date time4 = new Date(2008 , 8 , 8);
        System.out.println(time4);
        System.out.println("main over");
    }
}
//输出结果:
 main begin
 Date类无参数构造方法执行
 Date@234hd0ar
 带有参数year的构造方法
 Date@15df0hob
 带有参数year,month的构造方法
 Date@35hdbbg
 带有参数year,month,day的构造方法
 Date@6h0fs1ds
 main over

tiame1 就是:引用;

 

//我们需要在构造方法中手动的给属性赋值,这本来就是构造方法的主要的职责,要不然重载多次构造方法就没有意义了
public
class Date { int year; //year属性 int month; //month 属性 int day; //day 属性 public Date(){ } public Date(int year1){ year = year1; //year、year1 都是局部变量和上面的year属性变量没有关系 ,遵循就近原则 } public Date(int year1 , int month1){ year = year1; month = month1; } public Date(int year1 , int month1 , int day1){ year = year1; month = month1; day = day1; } }

public class DateTest {
    public static void main(String[] args) {
        System.out.println("main begin");
        Date time1 = new Date();
        System.out.println(time1.year + "年" + time1.month + "月" + time1.day + "日");
        Date time2 = new Date(2008);
        System.out.println(time2.year + "年" + time2.month + "月" + time2.day + "日");
        Date time3 = new Date(2008 , 8);
        System.out.println(time3.year + "年" + time3.month + "月" + time3.day + "日");
        Date time4 = new Date(2008 , 8 , 8);
        System.out.println(time4.year + "年" + time4.month + "月" + time4.day + "日");
        System.out.println("main over");
    }
}

//输出结果:
  //   main begin
  //   0年0月0日
  //   2008年0月0日
  //   2008年8月0日
  //   2008年8月8日
  //   main over
 

 

 

posted @ 2022-04-10 15:22  280887072  阅读(63)  评论(0编辑  收藏  举报