原文地址:http://www.java2000.net/p11697Override, 主要是因为父类的功能无法满足需求,我们又不能直接修改父类的情况下,我们通过子类重写,来实现新的功能。
- package Lession11;
- import java.util.ArrayList;
- import java.util.List;
- public class Lession11 {
- public static void main(String[] args) {
-
- Base b1 = new Base();
- b1.test();
- b1.test("");
- b1.test(new Object());
- System.out.println();
-
- Sub s1 = new Sub();
- s1.test();
- s1.test("");
-
- s1.test(new Object());
-
- Sub.test(new Object());
- System.out.println();
-
- Base b2 = new Sub();
- b2.test();
- b2.test("");
-
- b2.test(new Object());
-
- Base.test(new Object());
- }
- }
- class Base {
- public void test() {
- System.out.println("Base.test()");
- }
- public Base test(String name) {
- System.out.println("Base.test(String)");
- return this;
- }
- public final void test(int age) {
- System.out.println("final Base.test(int)");
- }
-
- public static void test(Object obj) {
- System.out.println("static Base.test(Object)");
- }
- }
- class Sub extends Base {
-
- public void test() {
- System.out.println("Sub.test()");
- }
-
-
- public Sub test(String name) {
- System.out.println("Sub.test()");
- return this;
- }
-
- public static void test(Object obj) {
- System.out.println("static Sub.test(Object)");
- }
- }
测试:
1 自行增加多个参数的覆盖使用,并测试运行结果
2 测试修改返回类型,比如
public String test()
看看编译结果,熟悉错误信息。
总结:
1 覆盖要求参数类型顺序必须和父类相同
2 从JDK5开始,允许返回类型和父类不同,但必须是其子类或者实现类(对于接口)
分享到:
相关推荐
静态(static)方法重写(override)
建议读者在阅读前具备Java的基础知识,包括类、对象、方法和继承等概念。 在阅读过程中,尝试编写简单的Java程序,体验方法覆盖的效果,并观察父类和子类方法的调用情况。 建议通过阅读相关的Java教材或搜索资料,...
方法的重写(override) 74 隐藏/封装(encapsulation) 75 为什么需要封装?封装的作用和含义? 75 使用访问控制符,实现封装 76 封装的使用细节 76 多态(polymorphism) 76 为什么需要多态? 76 如何实现多态? 77 方法...
对Java中@override个人理解阐述,希望能帮大家更好理解。
java代码-Override
Java面向对象编程中的重写(override)指的是子类可以重写其父类中的非private方法,使得子类在调用该方法时会使用自己的实现而不是父类的实现。 重写(Override)讲解 定义一个名为 Animal 的父类和一个名为 Cat 的...
从虚拟机角度看Java多态->(重写override)的实现原理
Lua中没有类的概念,但是程序猿说要面向对象,然后就有类。程序猿说要继承 和override,然后就有了继承 和 override 。
描述java基础容易忽略的问题,如下面几个知识点: int a = 1;1会存放在栈里 String s1 = "thanks";thanks会存放在data segment里 String s2 = new String("thanks");thanks会存放在data segment里 String a ="th...
Java面向对象(进阶)-- 四种权限测试与方法的重写(override_overwrite)
1.3.3 JavaME微型版11 1.4 JavaSE环境安装和配置12 1.4.1 什么是JDK12 1.4.2 JDK安装目录和实用命令工具介绍12 1.4.3 设置环境变量13 1.4.4 验证配置的正确性14 1.5 MyEcilpse工具介绍JavaSE环境安装和配置15 1.6 本...
Java基础 6 1. 面向对象的特征有哪些方面 6 2. String是最基本的数据类型吗? 7 3. int 和 Integer 有什么区别 7 4. String 和StringBuffer的区别 7 5. 运行时异常与一般异常有何异同? 7 6. 说出ArrayList,Vector, ...
现象: … java: 1801: method does not override a method from its superclass @Override… 原因: Eclipse is defaulting to Java 1.5 and you have classes implementing interface methods (which in Java 1.6 ...
建议读者在阅读前具备Java的基础知识,包括类、对象、方法和成员变量等概念。 在阅读过程中,尝试编写简单的Java程序,创建并使用父类和子类。 建议通过阅读相关的Java教材或搜索资料,进一步扩展学习与继承相关的...
java代码-Override2
枚举 定义 自实现枚举类 使用 enum 定义枚举类 实现接口的枚举类 枚举类的方法 注解
示例描述:本章介绍开发Java的基础语法知识。 accumulationByDoWhile.java 用do~while语句写的累加程序 accumulationByFor.java 用for语句写的累加程序 accumulationByWhile.java 用while语句写的累加程序 ...
11.Java 面向对象编程三大特性: 封装 继承 多态 关于继承的3点 12.String StringBuffer 和 StringBuilder 的区别是什么 String 为什么是不可变的 可变性、线程安全性的研究 13.自动装箱与拆箱 14.在一个静态方法内...
Java基础的笔试题 String 和StringBuffer 的区别 运行时异常与一般异常有何异同? Collection 和 Collections 的区别 sleep() 和 wait() 有什么区别? Overload 和Override 的区别。Overloaded 的方法是否可以改变...