廖雪峰Java2面向对象编程-2数据封装-1方法重载

方法重载

方法重载Overload是指:多个方法的方法名相同,但各自的参数不同

  • 参数的个数不同
  • 参数的类型不同
  • 参数位置不同
  • 方法返回值类型通常都是相同的

    目的:相同功能的方法使用同一名字,便于调用

    如以indexOf()为例

    public static void main(String[] args) {
        String s = "Test";
        int n1 = s.indexOf(‘e‘);//返回字符的索引
        int n2 = s.indexOf("st");//返回字符串的索引
        int n3 = s.indexOf(‘t‘, 2);//从index=2处开始,返回字符的索引
        int n4 = s.indexOf("st", 3);//从index=3开始,返回字符的索引。无结果返回-1
        System.out.println(n1);
        System.out.println(n2);
        System.out.println(n3);
        System.out.println(n4);
    }

2.使用重载方法改写Person类的setName()方法

Person.java

public class Person {
    private String name;
    public void setName(String name) {
        this.name = name;
    }
    public void setName(String firstName,String lastName) {
        this.name = firstName+lastName;
    }
    public void setName(String firstName, String middleName,String lastName) {
        this.name = firstName+ middleName +lastName;
    }
    public String getName() {
        return name;
    }
}

Hello.java

public class Hello {
    public static void main(String[] args) {
        Person ming = new Person();
        ming.setName("小明");
        System.out.println(ming.getName());
        Person hong = new Person();
        hong.setName("李","红");
        System.out.println(hong.getName());
        Person wang = new Person();
        wang.setName("王","宝","强");
        System.out.println(wang.getName());
    }
}

3.总结:

  • 重载方法应该完成相同的功能,参考String的indexOf()
  • 重载方法主要依靠参数类型和数量区分

    * indexOf(String str)

    * indexOf(String str, int fromIndex)

  • 不要去交换参数顺序

    * indexOf(String str, int fromIndex)

    * indexOf(int from Index, String str)

  • 重载方法返回值类型应该相同

原文地址:https://www.cnblogs.com/csj2018/p/10263377.html

时间: 2024-10-05 14:09:11

廖雪峰Java2面向对象编程-2数据封装-1方法重载的相关文章

廖雪峰Java2面向对象编程-3继承和多态-1继承

1.继承 继承是一种代码复用的方式. Student与Person有相同部分的代码. Student可以从Person继承,这样Student获得了Person的所有功能,只需要编写新增的功能即可.通过继承,可以实现代码的复用. 继承使用关键字extends,一个类只能有一个父类. 如果没有写明继承类,编译器会自动指定该类继承于基类Object. Person:超类super,父类,基类 Student:子类subclass,扩展类 Person.java //默认继承Object public

廖雪峰Java2面向对象编程-4抽象类和接口-1抽象类

每个子类都可以覆写父类的方法 如果父类的方法没有实际意义,能否去掉方法的执行语句?子类会报编译错误 如果去掉父类的方法,就失去了多态的特性 可以把父类的方法声明为抽象方法. 如果一个class定义了方法,但没有具体执行代码,这个方法就是抽象方法: 抽象方法用abstract修饰 抽象方法没有任何执行语句 因为无法执行抽象方法,因此这个类也必须声明为抽象类abstract class 无法实例化一个抽象类.如果子类不是抽象类,依旧可以被实例化. 抽象类作用: 抽象类用于被继承 抽象类可以强迫子类实

廖雪峰Java2面向对象编程-4抽象类和接口-2接口

抽象方法本质上是定义接口规范 public abstract class Person{ public abstract void run(); } public class Student extends Person{ @Override public void run(){} } public class Teacher extends Person{ @Override public void run(){} } 如果一个抽象类没有字段,所有方法全部是抽象方法,就可以把抽象类改写为接口i

廖雪峰Java2面向对象编程-6Java核心类-1字符串和编码

Java的字符串用String表示 1.String特点: 可以直接使用"..."表示一个字符串,不必使用new String:String s1 = "hello world"; 内容不可变 String s = "hello world"; System.out.println(s.equals("hello world")); 2.判断是否相等equals ` String s = "hello world&q

js面向对象编程:如何实现方法重载

js中如何实现方法重载?这涉及到三个问题 1同名函数的调用问题 2函数中特殊的参数arguments 3如何利用arguments实现方法重载 1同名函数的调用问题 都知道在js中如果存在多个名称相同的函数,则调用实际每次都只使用最后一个,js其实是没有重载的,也就是说,如果定义了多个同名的函数,单参数不一样,在调用时,js不管参数个数,只管前后顺序 例如: function test1(arg1) { alert("参数1:"+arg1); } function test1(arg1

js面向对象编程:怎样实现方法重载

js中怎样实现方法重载?这涉及到三个问题 1同名函数的调用问题 2函数中特殊的參数arguments 3怎样利用arguments实现方法重载 1同名函数的调用问题 都知道在js中假设存在多个名称同样的函数,则调用实际每次都仅仅使用最后一个,js事实上是没有重载的.也就是说.假设定义了多个同名的函数,单參数不一样,在调用时,js无论參数个数,仅仅管前后顺序 比如: function test1(arg1) { alert("參数1:"+arg1); } function test1(a

廖雪峰Java6 IO编程-2input和output-4Filter模式

1.JDK提供的InputStream分为两类: 直接提供数据的InputStream * FileInputStream:从文件读取 * ServletInputStream:从HTTP请求读取数据 * Socket.getInputStream():从TCP连接读取数据 提供额外附加功能的FilterInputStream * 如果要给FileInputStream添加缓冲功能: BufferedFileInputStream extends FileInputStream * 如果要给Fi

要想学好Java编程,构造器、方法重载、this关键字、垃圾回收机制,这4关一定要过!

有人说,你应该关注时事.财经,甚至流行的电影.电视剧,才有可能趁着热点写出爆文:有人说,你别再写"无聊"的技术文了,因为程序员的圈子真的很小,即便是像鸿洋那样的招牌大牛,文章是那么的干货,浏览量有多少?不到万吧:有人说,你别妄想在写作上面知识变现了,因为你写的文章真的很不优秀,我都不爱看! 我想说,你们说的话我都不爱听!我也懒得反驳,因为我没有成功,也就没有话语权,多说无益.我只想做一名执拗的程序员,静静地写文,哪怕只有一个读者--有时候,做一件事,并不是想要结果,仅仅只是因为心底那种

廖雪峰Java11多线程编程-2线程同步-2synchronized方法

1.Java使用synchronized对一个方法进行加锁 class Counter{ int count = 0; public synchronized void add(int n){ count += n; } public synchronized void dec(int n){ count -= n; } public int get(){//读取一个int类型是原子操作,不需要同步 return count; } } class AddThread extends Thread