开启Java之旅——007封装、继承、多态3(24.3.29)

文章探讨了Java中静态方法与非静态方法的区别,强调了子类重写父类方法的规则,包括方法名、参数列表、修饰符和异常的要求。着重说明了重写的需求背景,即子类可能需要扩展或修改父类的功能。
摘要由CSDN通过智能技术生成

四、方法重写

1、静态方法

package com.sh.work;

public class Demo04 {
    public static void main(String[] args) {
        //方法的调用只和定义的数据类型有关
        A a = new A();
        a.test();//A类静态方法
        B b = new A();//父类的引用可以指向子类
        b.test();//B类静态方法
    }
}
package com.sh.work;

public class B {
    public static void test(){
        System.out.println("B=>test()");
    }
}
package com.sh.work;

public class A extends B{
    public static void test(){
        System.out.println("A=>test()");
    }
}

 

2、非静态方法 

此时把A和B中的静态方法去掉,利用快捷键在A类中进行重写,默认走的都是B的方法。如果在A类中重写自己的方法,得到的都是A的方法。那么可以得出一个结论,就是静态方法和非静态方法有区别。

原因是B b = new A();//非静态方法中子类重写了父类的方法。

此时才叫重写并且重写的时候修饰符还必须是public的,不能是私有的。

只有子类继承了父类才能重写,并且是子类重写父类的方法。

public class A extends B {
    public void test() {
        super.test();
    }
}
//重写都是方法的重写,和属性无关
public class B {
    public  void test(){
        System.out.println("B=>test()");
    }
}
public class A extends B {
    @Override
    public void test() {
        System.out.println("A=>test()");
    }
}
//重写都是方法的重写,和属性无关
public class B {
    public  void test(){
        System.out.println("B=>test()");
    }
}

总结(重写):必须有继承到关系并且还是子类重写父类的方法,和属性无关 。子类的方法和父类必须要一致,方法体不同

特点:

      1.方法名必须相同。

      2.参数列表必须相同。

      3.修饰符范围可以扩大。

      4.抛出的异常:可以被缩小但是不能扩大。

为什么需要重写?

父类的功能:子类可能不一定需要,或者是不一定满足!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值