Java -- 重写父类方法

1、为什么需要重写?

  • 大部分时候,子类总是以父类为基础,额外增加新的成员和方法,但是当父类的某些方法与实际子类需要的方法有冲突或子类不需要时,需要重写父类的方法。
  • 例如,鸵鸟属于鸟类,大部分鸟类会飞,而鸵鸟不会飞,此时需要重写鸵鸟"飞"这个方法。

代码如下:

// 鸵鸟类 --> 继承鸟类
public class Ostrich extends Bird {
    public void test(){
        System.out.println("鸵鸟类可以无法在天上飞..");
    }
}

// 鸟类,即鸵鸟的父类
public class Bird {
    public void test(){
        System.out.println("鸟类可以在天上飞..");
    }
}

2、如何重写父类方法?

static修饰的方法的调用只和左边的类型有关,静态方法不能进行重写,如下面代码…

// 鸵鸟类 --> 继承鸟类
public class Ostrich extends Bird {
    public static void test(){
        System.out.println("鸵鸟鸟类不可以在天上飞..");
    }
}
// 鸟类 --> 鸵鸟类的父类
public class Bird {
    public static void test(){
        System.out.println("鸟类可以在天上飞..");
    }
}
// 应用程序 --> main
public class Application {
    public static void main(String[] args) {

        // static修饰的方法的调用只和左边的类型有关:
        // Ostrich(调用Ostrich的), Bird(调用Bird的)
        Ostrich ostrich = new Ostrich();

        // 父类的引用bird指向子类
        Bird bird = new Ostrich();

        ostrich.test();
        bird.test();
    }
}

代码执行后如下:

鸵鸟鸟类不可以在天上飞..
鸟类可以在天上飞..

非静态方法才能进行重写 – 代码如下…

// 鸵鸟类 --> 继承鸟类
public class Ostrich extends Bird {
    @Override       // 注解:有功能的注释
    public void test(){
        System.out.println("鸵鸟鸟类不可以在天上飞..");
    }
}
// 鸟类 --> 鸵鸟类的父类
public class Bird {
    public void test(){
        System.out.println("鸟类可以在天上飞..");
    }
}
// 应用程序 --> main
public class Application {
    public static void main(String[] args) {

        Ostrich ostrich = new Ostrich();

        // 父类的引用bird指向子类
        Bird bird = new Ostrich();

        ostrich.test();
        bird.test();
    }
}

代码运行如下:

鸵鸟鸟类不可以在天上飞..
鸵鸟鸟类不可以在天上飞..

此时已成功重写父类的方法,即只要是Ostrich的对象调用的都是重写后的方法。


3、总结

重写:需要有继承关系,子类重写父类的方法

  • 方法名必须相同,方法体不同
  • 参数列表必须相同
  • 修饰符:范围可以扩大但是不能缩小
  • 抛出的异常:范围可以被缩小,但是不能扩大 --> ClassNotFoundException
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值