java重写

重写

在子类中创建与父类中名称、参数列表一致,返回类型一致或为父类方法返回类型的子类的方法,叫做方法重写(override),也叫覆盖

则在子类调用该方法时仅执行子类的方法

public class Main{
    public static void main(String[] args) {
        B b = new B();
        b.method(10)
    }
}
class A {
    public void method(int num) { 
        System.out.println("A类的method方法被调用" + num);
    }
}
class B extends A {
    public void method(int a) { 
    	System.out.println("B类的method方法被调用" + a);
    }
}

输出

B类的method方法被调用10

如果不删去子类的method方法,但想要调用父类的method方法,应该怎么办?

可以使用super(),在子类写一个方法,将super.method写在里面

例如改动子类的method方法为:

class B extends A {
    public void method(int a) { 
    	super.method(a);
    }
}

输出

A类的method方法被调用10

注意:子类重写方法不能缩小父类方法的访问权限。

public class A{
    protected void method() {
        
    }
}
clsaa B{
    private void method() {
        
    }
}

以上写法是错误

父类中method方法的修饰符为protected,则子类B的method方法不能为private和default。

注意:子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类。

class A{
    
}
class B extends A{
    public B method() {
        return new B();
    }
}
class C extends B{
    public A method() {
        return new B();
    }
}

以上写法是错误

B类的method方法返回类型是B类对象,C类重写的method方法返回类型是A类对象,B类是A类的子类。

重写 VS 重载

位置关系方法名返回类型参数列表修饰符
重写override父类方法与子类方法相同相同或子类型相同相同或子类型
重载overload同一类的两个方法相同相同或不同不同相同或不同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值