方法重载overload()和重写override()

本文介绍了类中通过方法名重载的构造函数示例,以及如何在子类中正确重写(override)父类方法,包括返回值类型、参数列表的要求。通过Hello类和indexOf方法的演示,展示了重载和重写在Java中的实践与注意事项。
摘要由CSDN通过智能技术生成

1.在一个类中,一组方法同名,但是这组同名方法参数各不相同,一般是一个类的多个构造方法之间构成重载关系

class Hello 
{
    public void hello() 
    {
        System.out.println("Hello, world!");
    }

    public void hello(String name) 
    {
        System.out.println("Hello, " + name + "!");
    }

    public void hello(String name, int age) 
    {
        if (age < 18) 
        {
            System.out.println("Hi, " + name + "!");
        } 
        else 
        {
            System.out.println("Hello, " + name + "!");
        }
    }
}

 注意:重载的方法一般返回值类型也是相同的,方法重载的目的在于,功能类似的方法用同一个名字,更容易记住,因此调用起来更加简单

int indexOf(char ch):根据字符的Unicode码查找

int indexOf(char ch, int fromIndex):根据字符查找,但指定起始位置

int indexOf(String str):根据字符串查找

int indexOf(String str, int fromIndex)根据字符串查找,但指定起始位置
       

String s = "Test string";

//参数是单个字符
int n1 = s.indexOf('t'); // 3

//参数是字符串
int n2 = s.indexOf("st"); //  2

//从下标为4的字符(即空格)开始进行查找
int n3 = s.indexOf("st", 4);  //  5

       

 2.override重写是说在子类中定义一个与父类方法完全相同的新方法

方法名要相同,参数列表也要相同,返回值的返回类型也要相同,任何一个不同都不算重写

class Person 
{
    public void run() 
    { 
        … 
    }
}

class Student extends Person 
{
    // 不是Override,因为参数列表不同:
    public void run(String s) 
    { 
        … 
    }

    // 不是Override,因为返回值类型不同:
    public int run() 
    { 
       … 
    }

    //是Override
    public void run() 
    { 
        … 
    }
}

加上@Override可以让编译器帮助检查是否进行了正确的重写,但是@Override不是必需的

如果一个父类不允许子类对它的某个方法进行重写,可以把该方法标记为final。用final修饰的方法不能被Override重写

class Person 
{
    protected String name;
    public final String hello() 
    {
        return "Hello, " + name;
    }
}

Student extends Person 
{
    // compile error: 不允许覆写
    @Override
    public String hello() 
    {
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值