zoukankan      html  css  js  c++  java
  • java重写和重载

    package cs;
    JAVA重写:
    又称为覆盖,发生前提为:
    在继承中发生,子类重写父类的方法,要求返回类型一样,参数个数和参数类型一样,函数名称一样。
    而且覆盖对访问级有要求。
    JAVA重载:
    发生在同一个类中,要求函数名称一样,返回值没有做要求,但参数类型或者参数个数至少有一个不一样,其对访问修饰符没有要求。
    在用static修饰的方法中,该方法没有多态性,因此不能被重写,如果在子类里面出现的方法和父类一样,形似方法重写,实际上是子类隐藏了父类的方法。如下代码:
    
    public class csa {
    	public static void main(String args[]){
    		M m=new N();//M类型的m说明 下面调用的是M的output方法
    		m.output();
    	}
    }
    class M{
    	public static void output(){
    		System.out.println("M");
    	}
    }
    class N extends M{
    	public static void output(){
    		//@override
    		System.out.println("N");
    	}
    }
    
    此时为子类N隐藏了父类M的output方法,采用@override加在子类方法之前,编译错误,可以知道static修饰 的方法不能被重写,
    主函数里面调用的是哪个output方法取决于该参数编译时是哪个类型,
    而不是运行时是哪个类型。
    
    
    下面代码编译错误:
    public class csa {
    	public static void main(String args[]){
    		N m=new N();
    		m.output();
    	}
    }
    class M{
    	public static void output(){
    		System.out.println("M");
    	}
    }
    class N extends M{
    	public void output(){//返回值一样,函数名和参数一样,为方法覆盖
    		System.out.println("N");
    	}
    }
    该为子类方法覆盖父类方法,由于不能被覆盖,所以编译错误,同理可以把父类的static去掉,依然可以得到编译错误,所以静态方法不能覆盖非静态方法,非静态方法也不能覆盖静态方法.
    static修饰的变量为成员变量,在加载类的时候分配内存。
  • 相关阅读:
    Tomcat控制台日志乱码
    springboot中使用poi读取Excel数据,导出数据
    Linux系统下ctrl+z挂起进程后怎么恢复
    JSONObject与String、实体类互相转换
    用xshell连接VMware中的Linux的方法步骤(2种)
    vm虚拟机的安装以及linux系统centos的装载
    mysql的安装
    IDEA中使用debug进行调试的简单介绍
    Springboot整合Mybatis
    java读取txt文件封装成对象批量插入数据库的实例
  • 原文地址:https://www.cnblogs.com/1994two/p/3439796.html
Copyright © 2011-2022 走看看