重载

作者: 小疏林er | 来源:发表于2020-04-18 08:56 被阅读0次

1、重载

重载(Overload) 是在一个类里面,方法名字相同,而参数列表不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

注意和重写进行区分,重写强调父类和子类之间同名方法,而重载一个类中存在同名方法。最常用的地方就是构造器的重载。

2、重载和重写的区别

  • 方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
  • 方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型必须一样,返回值也一样的方法,就称为重写(Overriding)。
  • 方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。
  • 重载可修改访问权限,重写只能降低限制,不能做更严格的限制。

2、构造方法的重载

  • 构造方法:

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

类构造方法中,第一行默认是super()

  • 目的:

(1)构造出来一个类的实例(new的时候就会调用这方法);
(2)对构造出来个一个类的实例(对象)初始化。

  • 构造方法示例

User.class

public class User {
    private String name ;
    private String password ;
    private int age;
    private boolean man;
    public User(String name, String password, int age, boolean man) {
        super();
        this.name = name;
        this.password = password;
        this.age = age;
        this.man = man;
    }
    public User(String name, String password) {
        super();
        this.name = name;
        this.password = password;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public boolean isMan() {      //不是get方法,换名了
        return man;
    }
    public void setMan(boolean man) {
        this.man = man;
    }
}

注意:boolean类型的值没有get方法,是is方法(就是换了个名字,功能一样)

Test_OverLoad.class

public class Test_OverLoad {

    public static void main(String[] args) {
        User u1 = new User( "老徐","123456");     //调用构造方法进行初始化
        System.out.println("用户名:"+u1.getName());
        System.out.println("密码:"+u1.getPassword());
        
        System.out.println("*********");
        
        User u2 = new User( "老徐","123456",18,true);     //调用构造方法进行初始化
        System.out.println("用户名:"+u2.getName());
        System.out.println("密码:"+u2.getPassword());
        System.out.println(u2.getName()+"永远"+u2.getAge()+"岁");
        if(u2.isMan()) {
            System.out.println(u2.getName()+"是男娃");
        }else {
            System.out.println(u2.getName()+"是女娃");
        }
    }
}
  • 结果图


    image.png

3、普通成员方法的重载

栗子:add方法的重载
目的:根据传入参数列表的不同,进行不同的操作,并返回不同类型的值。

public class Test_OverLoad2 {
    
    public int add(int a,int b) {   
        return a+b;
    }
    public int add(int a,int b,int c) {  
        return a+b+c;
    }
    public double add(double a,double b) {
        return a+b;
    }
    public String add(String a,String b) {
        return a+b;
    }
    public static void main(String[] args) {
        Test_OverLoad2 t = new Test_OverLoad2();
        
        System.out.println(t.add(1, 1));
        System.out.println(t.add(0.1, 0.3));
        System.out.println(t.add(1, 3, 8));
        System.out.println(t.add("hello ","world!"));
        
    }
}

结果图:

image.png

相关文章

  • PHP编程开发技巧:PHP中重载如何实现

    PHP编程开发技巧:PHP中重载如何实现,重载分为属性重载和方法重载,在PHP中的重载和在其它编程语言的重载不一样...

  • C++操作符重载

    重载操作符的限制 可以重载的操作符 不能重载的算符 操作符重载的语法形式 重载赋值操作符 重载+-*/运算操作符操...

  • Java重载与重写

    简言 重写和重载都是面向对象多态的一种表现,重载是编译时多态,重载是运行时多态. 重载 重载(Overloadin...

  • C++基础-(重载)

    C++基础 重载 哪些运算符可以被重载:::,.,->,*,?:不能被重载 重载操作符的标志(operator) ...

  • C++ 部分运算符重载

    可重载的运算符 不可重载的运算符和符号 重载运算符为类的成员函数 重载运算符为友元函数 重载赋值运算符 重载流插入...

  • 2019-07-11 运算符的重载

    运算符的重载 重载运算符 (“::”,“.*”,“.”,“?:”)不能被重载。 重载运算符时,不能改变其本质,如不...

  • Cocos2dx之C++基础(四)

    函数重载函数不以返回值来区分重载函数函数不以参数名来区分重载函数使用重载函数的时候不要引起二义性结构函数也可以重载...

  • C#多态的表现-方法重载,方法重写以及密封类的特点

    方法重载 方法重载:构造函数就属于特殊的方法重载 方法重载:是指同一个类中相同方法的不同行为 方法重载的特点: 1...

  • C语言到C++(4) - 重载

    C++中新增了重载功能,重载分为两部分,函数重载和运算符重载。 1. 函数重载 在C语言编程中,我们经常遇到一组函...

  • C++ 操作符重载

    重载算数操作符 重载操作符[] 重载关系操作符 重载类型转换操作符 重载输入输出操作符 引例 用一个类Fracti...

网友评论

      本文标题:重载

      本文链接:https://www.haomeiwen.com/subject/dygdvhtx.html