首页 > 其他分享 >11 方法重写

11 方法重写

时间:2023-02-09 14:38:08浏览次数:44  
标签:11 test1 静态方法 重写 test 方法 public

方法重写

package com.zhan.base05Oop.base05Oop03;

public class Test11 {
    // 方法重写
    // 重写都是方法的重写,和属性无关
    // alt + insert(Fn) :快捷键生成方法的重写

    /*  重写 vs 重载
    重写:需要有继承关系,只能子类重写父类的方法,参数列表必须相同
    重载:不需要继承关系,对本类的方法进行操作,参数列表必须不同

    重写的特点
       1. 方法名必须相同
       2. 参数列表必须相同
       3. 修饰符,可以扩大但不能缩小。 从大到小:public->protected->default->private
       4. 抛出的异常: 范围,可以缩小但不能扩大

   重写,子类和父类的方法名和参数列表必须要相同,但方法体要不同(不然就没意义了)
   为什么需要重写:
        1. 父类方法的功能,子类不一定需要或者不一定满足
     */
    public static void main(String[] args) {


        /*
        即b是A new出来的对象,因此调用了A的方法
        因为静态方法是类的方法,而非静态是对象的方法
        有static时,b调用了B类的方法,因为b是用b类定义的
        没有static时,b调用的是对象的方法,而b是用A类new的
         */

        /*   静态方法和非静态方法有很大的不同!
           静态方法:定义的是什么类(左边的)就调用什么类的静态方法(静态方法是类的方法,而非静态是对象的方法):不是重写
           非静态非私有的方法  才能重写

         */
        // 静态的方法
        A a=new A();
        a.test();
        // 父类的引用指向子类
        B b=new A();
        b.test();

        // 非静态的方法
        a.test1();
        b.test1();


    }

}

class A extends B{

    public static void test(){
        System.out.println("A=>test");
    }
    @Override     // 注解:有功能的注释
    // alt + insert(Fn) :快捷键生成方法的重写
    public  void test1() {
       // super.test();  默认的重写是直接调用父类的方法
        System.out.println("A=>test1");   // 自己可以手动进行想要的重写
    }
}

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

标签:11,test1,静态方法,重写,test,方法,public
From: https://www.cnblogs.com/zhanjianhai/p/17104962.html

相关文章