Java基础之重写和重载谁是谁

重写

show 代码

public class MethodFather {  
   void max(int a, int b) {  
      System.out.println("父类:Using Int");  
      System.out.println(a < b ? a : b);  
   }  
}  

public class MethodSon extends MethodFather{  
   @Override  
   void max(int a, int b) {  
       System.out.println("子类:Using Int");  
       System.out.println(a < b ? a : b);  
   }  
}

重写:

子类实现父类已经存在的方法,如果不需要父类方法逻辑去除super();也可实现自己的逻辑

注意事项:

  • 子类中的方法与父类中的方法,有相同的返回类型、相同的方法名称、相同的参数列表
  • 子类中的方法的访问级别,不能低于父类中该方法的访问级别
  • 子类中方法抛出的异常范围,不能大于父类中方法抛出的异常的范围

重载

show代码:

    public Student() {
    }

    public Student(Integer id) {
        this.id = id;
    }

    public Student(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

重载:

java允许在一个类中,多个方法拥有相同的名字,但在名字相同的同时,必须有不同的参数

重写和重载有时候其实能够明白什么区别,就是有时候分不清谁试试..

区别记忆

重载:玩游戏的存档,重载,内容是一样 的,当时存档被你加载后,有些东西就变了,如果时间

重写:想起老师让你重写大字一百遍,记得要一模一样的…

问题:父类的静态方法能不能被子类重写?

首先你的明白,静态方法子类是可以调用的

但是static修饰符修饰的东西,在编译之后所分配的内存会一直存在(不会被回收),直到程序退出内存才会释放这个空间。

而该对象的所有指向都会是父类的引用,而不是子类

父类代码:

public class Fu {  
    public static void show() {  
        System.out.println("父类的静态方法");  
    }  
    public void method() {  
        System.out.println("父类的普通方法");  
    }  
}  

子类代码:

public class Zi extends Fu {  
    public static void main(String[] args) {  
        Fu fu = new Zi();  
        fu.show();  
        fu.method();  
    }  
    public static void show() {  
        System.out.println("子类的静态方法");  
    }  
    public void method() {  
        System.out.println("子类的普通方法");  
    }  

}  

输出的结果是:

父类的静态方法

子类的普通方法

重写,是因为运行时多态的判断,才能区分具体去调用那个类,如果编译时,内存指针都指向父类的内存空间,后面多态判断就失效了,重写也就没有意义了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值