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

本文实例讲述了Java重载构造原理与用法。分享给大家供大家参考,具体如下:

带参数方法

【1】无参数,无返回值

void 方法名(){方法体;}

【2】无参数,有返回值

int 方法名(){方法体;}

【3】有参数,无返回值

void 方法名(int num){方法体;}

【4】有参数,有返回值

int 方法名(int num){方法体;}

可变参数与数组参数的区别

【1】可变参数传参灵活,,可以无参,可以多个参数,可以数组;

    数组参数只能传递数组

【2】可变参数必须放在最后

    数组可以放在任意位置

【3】可变参数只能有一个;

    数组参数可以有多个。

递归算法

递归:程序调用自身的算法。

条件:1.调用方法本身。

      2.出口

嵌套for循环 和  用递归实现 的比较

栈 主要是用来存放栈帧的,每执行一个方法就会出现压栈操作,所以采用递归的时候产生的栈帧比较多,递归就会影响到内存,非常消耗内存,而使用for循环就执行了一个方法,压入栈帧一次,只存在一个栈帧,所以比较节省内存。

封装

封装定义:隐藏对象的属性和实现细节,仅对外提供公共的访问方式。

使用封装的好处

1、良好的封装能够减少耦合。

2、类内部的结构可以自由修改。

3、可以对成员进行更精确的控制。

4、隐藏信息,实现细节。

public class Husband {

  /*
   * 对属性的封装
   * 一个人的姓名、性别、年龄、妻子都是这个人的私有属性
   */
  private String name ;
  private String sex ;
  private int age ;
  private Wife wife;

  /*
   * setter()、getter()是该对象对外开发的接口
   */
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getSex() {
    return sex;
  }

  public void setSex(String sex) {
    this.sex = sex;
  }

  public int getAge() {
    return age;
  }

  public void setAge(int age) {
    this.age = age;
  }

  public void setWife(Wife wife) {
    this.wife = wife;
  }
}

方法重载

在一个类中,方法名相同,参数列表(个数,顺序,类型)不同。与返回值无关。

作用:方便记忆和使用。

重载方法不同的方式

在java中重载方法有三种方式,它们分别是:

  • 通过改变参数的数量
  • 通过更改数据类型
  • 通过改变参数排列顺序

注意:在java中,只通过更改方法的返回类型来实现方法重载是不可以的。

构造器

系统会自动创建一个构造方法(构造器)默认构造。

如果没有显示的定义构造器,那么系统会自动定义一个构造器,叫默认构造器。

可以显示定义构造器,只要显示定义了构造器,那么系统调用的是显示定义的构造器

无参构造,只能在创建对象的时候才能调用

注意:1.没有任何返回值

      2.名字和类名必须一致

作用:初始化对象。

构造器和访问器的区别

1.构造器 创建完对象,所有的属性都初始化完成、

 访问器不能。

2.构造器 创建对象的时候初始化,可以一次给所有属性初始化

访问器需要在创建对象后,逐个调用赋值

3.创建对象后,想要修改属性值那么需要用访问器。

构造器和普通方法的区别

1.构造器就是用来初始化对象的。

普通方法是为了完成某个特定的功能

2.构造器只能在创建对象的时候调用new

普通方法在使用的时候可以随意调用,不调用就不执行

初始化对象

1.成员变量默认初始化

2.声明处初始化或构造块初始化

3.构造器初始化

构造块

定义:在类中

class 类名{

  {
    构造块:
    作用:解决构造器中的属性值相同,代码重用的问题。
  }

}

本类构造器调用

this();//

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

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

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

  • 详解Java使用super和this来重载构造方法

    详解Java使用super和this来重载构造方法 实例代码: //父类 class anotherPerson{ String name = ""; String age = ""; public String getAge() { return age; } public void setAge(String age) { this.age = age; } public void setName(String name){ this.name = name;

  • Java中继承、多态、重载和重写介绍

    什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(下面会讲到,这种方式叫重写)的方式,产生一个新的类型.继承是面向对象的三个基本特征--封装.继承.多态的其中之一,我们在使用JAVA时编写的每一个类都是在继承,因为在JAVA语言中,java.lang.Object类是所有类最根本的基类(或者叫父类.超类),如果

  • Java 重写与重载方法与区别详解

    重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类能够根据需要实现父类的方法. 在面向对象原则里,重写意味着可以重写任何现有方法.实例如下: class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public

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

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

  • 浅谈java实现重载的方法

    重载(重新载选方法): java允许在一个类中,存在多个方法拥有相同的名字,但在名字相同的同时,必须有不同的参数,这就是重载,编译器会根据实际情况挑选出正确的方法,如果编译器找不到匹配的参数或者找出多个可能的匹配就会产生编译时错误,这个过程被称为重载的解析. 重载包括:普通方法的重载和构造方法的重载 方法:即函数(文中我们统称之为"方法"),是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能.而且,同时还带有一个入口和一个出口,所谓的入口,就是函数所带的各个参数,我们

  • java构造函数示例(构造方法)

    TestCar.java 复制代码 代码如下: public class TestCar {    public static void main(String[] args) {        Car c1 = new Car();        c1.color = "red";        c1.brand = "xxx";//如果这辆汽车有很多属性,这样一一赋值不是很麻烦?有没有办法一生产出来就设定它的属性(初始化)吗?有~~~看下面          

  • java中重载、覆盖和隐藏三者的区别分析

    重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg:void a ()和int a() ,如果调用a(),出现歧义) 3.main方法也是可以被重载的 覆盖:子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是子类),返回值和异常比父类小或者相同(即为父类的子类),访问修饰符比父类大或者相同 两同两小一大  注意:子类实例方法不能覆盖父类的

  • 解析Java继承中方法的覆盖和重载

    方法的覆盖 在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称.返回值类型.参数列表. 如果在新类中定义一个方法,其名称.返回值类型和参数列表正好与父类中的相同,那么,新方法被称做覆盖旧方法. 参数列表又叫参数签名,包括参数的类型.参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同. 被覆盖的方法在子类中只能通过super调用. 注意:覆盖不会删除父类中的方法,而是对子类的实例隐藏,暂时不使用. 请看下面的例子: public c

  • java中重载,继承,重写和多态的区别

    重载,继承,重写和多态的区别: 1)继承是子类获得父类的成员. 2)重写是继承后重新实现父类的方法. 3)重载是在一个类里一系列参数不同名字相同的方法. 4)多态则是为了避免在父类里大量重载引起代码臃肿且难于维护. 网上看到一个有趣的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法. 下面的例子包含了这四种实现: class Triangle extends Shape { public int getSides() {   return 3;  } } class Rectang

  • 简单谈谈java中匿名内部类构造函数

    先看看下面的代码能不能编译通过: public static void main(String[] args) { List l1 = new ArrayList(); List l2 = new ArrayList(){}; List l3 = new ArrayList(){{}}; System.out.println(l1.getClass() == l2.getClass() ); System.out.println(l2.getClass() == l3.getClass() );

随机推荐