41-方法重写







方法重写

  • main 方法

    public class Application {
        public static void main(String[] args) {
            A a = new A();  //走的是 A 类静态方法
            a.test();
            B b = new A();  //走的是 B 类静态方法
            b.test();
        }
    }
  • 父类 B

    package Oop.Demo_02;
    public class B {
        public static void test(){
            System.out.println("B=>text");
        }
    }
  • 子类 A

    package Oop.Demo_02;
    //重写都是方法的重写,和属性无关
    public class A extends B{
        public static void test(){
            System.out.println("A=>text");
        }
    }
  1. 方法的调用之和左边,也就是定义的数据类型有关

  2. 父类的引用指向子类

静态方法 和 非静态方法 有区别

  • main 方法

    public class Application {
        public static void main(String[] args) {
            A a = new A();
            a.test();
            B b = new A();
            b.test();
        }
    }
  • 父类 B

    package Oop.Demo_02;
    public class B {
        public void test(){
            System.out.println("B=>text");
        }
    }
  • 子类 A

    package Oop.Demo_02;
    //重写都是方法的重写,和属性无关
    public class A extends B{
        //Override 重写
        @Override  //注释,有功能的注释
        public void test() {
            System.out.println("A=>test");
        }
    }
  • 获得输出

    A=>test
    A=>test

解释


statio 时为静态方法,没有 statio 时为非静态方法。静态方法是类的方法,非静态方法是对象的方法。因为以上示例中,没有 statio 所以定义的是类的方法。对象 bA new 出来的,因此b调用的是A的方法。所以最后输出的会是 A=>test

总结


  • 重写

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

      • 方法名必须相同

      • 参数列表列表必须相同

      • 修饰符: 范围可以扩大但不能缩小: public > Protected > Default > private

      • 抛出的异常: 翻译缩小但不能扩大:

    • 子类的方法和父类必须一直。方法体不同!

  • 为什么要重写?

    • 父类的功能,子类不一定需要,或者不一定满足


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇