重载和重写的区别
发表于|更新于
|总字数:274|阅读时长:1分钟|浏览量:
重载 Overload
表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。
重写 Override
表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法
文章作者: 烦恼多一点
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 非鱼小站!
相关推荐

2022-04-26
MVC 设计思想
MVC 是三个单词的首字母缩写,它们是 Model(模型)、View(视图)和 Controller(控制)。 这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层: 最上面的一层,是直接面向最终用户的”视图层”(View)。它是提供给用户的操作界面,是程序的外壳。 最底下的一层,是核心的”数据层”(Model),也就是程序需要操作的数据或信息。 中间的一层,就是”控制层”(Controller),它负责根据用户从”视图层”输入的指令,选取”数据层”中的数据,然后对其进行相应的操作,产生最终结果。 三层划分只是 MVC 的静态面貌。真正让它成为”思想”而非”目录结构”的,是依赖方向与变化隔离:View 与 Model 互不直接依赖,Controller 做中间调度,于是”界面变化”与”数据/业务变化”可以独立演进。本文补上交互流程、Spring MVC 的落地映射、以及 MVC 的变体与误用。 交互流程:一次请求的三角关系经典 MVC 的交互(以 Web 应用为例): 用户操作 View(提交表单/点击链接)→ 请求进入 Controller C...

2022-04-22
HTTP 请求的 GET 与 POST 方式的区别
根据 HTTP 规范,GET 用于信息获取,而且应该是安全的和幂等的。 根据 HTTP 规范,POST 表示可能修改变服务器上资源的请求。 首先是 “GET 方式提交的数据最多只能是 1024 字节”,因为 GET 是通过 URL 提交数据,那么 GET 可提交的数据量就跟 URL 的长度有直接关系了。而实际上,URL 不存在参数上限的问题,HTTP 协议规范没有对 URL 长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE 对 URL 长度的限制是 2083 字节(2K+35)。对于其他浏览器,如 Netscape、FireFox 等,理论上没有长度限制,其限制取决于操作系统的支持。注意这是限制是整个 URL 长度,而不仅仅是你的参数值数据长度。 POST 是没有大小限制的,HTTP 协议规范也没有进行大小限制 以上为标准答案,实际回答时可增加如下两条: 首先是语义区别,GET 为获取,POST 为提交;(分清语义区别是为了更好的实现 RESTFul 风格 API) 其次是 GET 请求只请求服务器一次,但 POST 会请求两次,第一次是 OPTIONS 方式请...

2022-04-27
equals 与 == 的区别
== 与equals 的主要区别是:== 常用于比较原生类型,而 equals() 方法用于检查对象的相等性。 另一个不同的点是:如果 == 和 equals() 用于比较对象,当两个引用地址相同,== 返回 true。而 equals() 可以返回 true 或者 false 主要取决于重写实现。最常见的一个例子,字符串的比较,不同情况 == 和 equals() 返回不同的结果。 两点结论正确但偏薄。要答出深度,需要补三块:字符串常量池这个经典案例的完整推演、equals 重写必须连带重写 hashCode 的契约、以及 Integer 缓存这类包装类的陷阱。 语义层:值比较 vs 引用比较 == 是运算符:基本类型比较值;引用类型比较引用(地址)——即”是不是同一个对象” equals 是 Object 的方法:默认实现就是 this == obj(比引用);语义由重写者定义,String、Integer、LocalDate 等都重写为”内容相等” 所以”equals 比内容”不是语言保证,而是类的契约承诺;自己写的类不重写 equals,equals 就退化为 ...

2022-04-19
抽象类和接口有什么区别
参数 抽象类 接口 默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现 实现 子类使用 extends 关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字 implements 来实现接口。它需要提供接口中所有声明的方法的实现 构造器 抽象类可以有构造器 接口不能有构造器 与正常 Java 类的区别 除了你不能实例化抽象类之外,它和普通Java类没有任何区别 接口是完全不同的类型 访问修饰符 抽象方法可以有 public、protected 和 default 这些修饰符 接口方法默认修饰符是 public。你不可以使用其它修饰符。 main 方法 抽象方法可以有 main 方法并且我们可以运行它 接口没有 main 方法,因此我们不能运行它。 多继承 抽象方法可以继承一个类和实现多个接口 接口只可以继承一个或多个其它接口 速度 它比接口速度要快 接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。 添加新方法 如果你往抽象类中添加新的方法,你可以给它...

2022-04-25
JDBC 流程
向 DriverManager 类注册驱动数据库驱动程序 调用 DriverManager.getConnection 方法, 通过 JDBC URL,用户名,密码取得数据库连接的 Connection 对象。 获取 Connection 后, 便可以通过 createStatement 创建 Statement 用以执行 SQL 语句。 有时候会得到查询结果,比如 select,得到查询结果,查询(SELECT)的结果存放于结果集(ResultSet)中。 关闭数据库语句,关闭数据库连接。 五步流程背下来只要十秒,但每一步背后都有一个”为什么这样设计”:驱动为什么要注册、Statement 三种形态的区别、资源为什么要按序关闭。把这些补齐,JDBC 就从流程变成机制。 完整代码与五步对应// 1. 注册驱动(JDBC4 之后 SPI 自动加载,此行可省略)Class.forName("com.mysql.cj.jdbc.Driver");// 2. 获取连接try (Connection conn = DriverManager.getConn...

2022-07-13
双亲委派模型
类加载器加载类的开放性类加载器(ClassLoader) 是Java语言的一项创新,也是Java语言流行的一个重要原因,在类加载的第一阶段“加载”过程中需要通过一个类的全限定名来回去定义此类的二进制字节流,完成这个动作的代码块就是 类加载器,这一动作是放在Java虚拟机外部去实现的,以便让应用程序自己去决定如何获取所需的类。 虚拟机规范并没有指明二进制字节流要从一个Class文件获取,或者说根本没有指明从哪里获取、怎样获取。这种开放使得Java在很多领域得到充分运用,例如: 从ZIP包中读取,这很常见,成为JAR,EAR,WAR格式的基础 从网络中获取,最典型的运用就是Applet 运用时计算生成,最典型的是动态代理技术,在java.lang.reflect.Proxy中,就是用了ProxyGrenerator.generateProxyClass 来为特定接口生成形式为“*$Proxy”的代理类的二进制字节流 有其它文件生成,最典型的JSP应用,由JSP文件生成对应的Class类 类加载器与类的唯一性类加载器虽然只用于实现类的加载动作,但是对于任意一个类,都需要由它的类加载...
评论
WalineDisqus
公告
欢迎来到非鱼小站!140+ 篇原创技术文章持续更新,欢迎留言交流~





