`
逆风的香1314
  • 浏览: 1445450 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

老紫竹JAVA基础培训(11),方法的Override

阅读更多

原文地址:http://www.java2000.net/p11697


Override, 主要是因为父类的功能无法满足需求,我们又不能直接修改父类的情况下,我们通过子类重写,来实现新的功能。
  1. package Lession11;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. /**
  5.  * 老紫竹JAVA基础培训(11),方法的Override.<br>
  6.  * 
  7.  * 
  8.  * @author 老紫竹 JAVA世纪网(java2000.net)
  9.  * 
  10.  */
  11. public class Lession11 {
  12.   public static void main(String[] args) {
  13.     // 单纯基类的测试
  14.     Base b1 = new Base();
  15.     b1.test();
  16.     b1.test("");
  17.     b1.test(new Object());
  18.     System.out.println();
  19.     // 单纯子类的测试
  20.     Sub s1 = new Sub();
  21.     s1.test();
  22.     s1.test("");
  23.     // 静态方法调用,会根据变量的类型,而不是对象的类型
  24.     s1.test(new Object());
  25.     // 上面的代码等同于这个
  26.     Sub.test(new Object());
  27.     System.out.println();
  28.     // 基类的变量,子类的实例的测试
  29.     Base b2 = new Sub();
  30.     b2.test();
  31.     b2.test("");
  32.     // 静态方法调用,会根据变量的类型,而不是对象的类型
  33.     b2.test(new Object());
  34.     // 上面的代码等同于这个
  35.     Base.test(new Object());
  36.   }
  37. }
  38. class Base {
  39.   public void test() {
  40.     System.out.println("Base.test()");
  41.   }
  42.   public Base test(String name) {
  43.     System.out.println("Base.test(String)");
  44.     return this;
  45.   }
  46.   public final void test(int age) {
  47.     System.out.println("final Base.test(int)");
  48.   }
  49.   // 静态方法属于类,不属于实例,所以不存在override问题
  50.   public static void test(Object obj) {
  51.     System.out.println("static Base.test(Object)");
  52.   }
  53. }
  54. class Sub extends Base {
  55.   // 标准的覆盖方法
  56.   public void test() {
  57.     System.out.println("Sub.test()");
  58.   }
  59.   // JDK5开始的覆盖方法
  60.   // 允许返回类型和父类不同,但必须是其子类或者实现类
  61.   public Sub test(String name) {
  62.     System.out.println("Sub.test()");
  63.     return this;
  64.   }
  65.   // 静态方法属于类,不属于实例,所以不存在override问题
  66.   public static void test(Object obj) {
  67.     System.out.println("static Sub.test(Object)");
  68.   }
  69. }


测试:
1 自行增加多个参数的覆盖使用,并测试运行结果

2 测试修改返回类型,比如
public String test()
看看编译结果,熟悉错误信息。




总结:
1 覆盖要求参数类型顺序必须和父类相同
2 从JDK5开始,允许返回类型和父类不同,但必须是其子类或者实现类(对于接口)

分享到:
评论

相关推荐

    Java就业培训教程.pdf

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而闻名...以上就是Java就业培训教程中可能涵盖的关键知识点,通过深入理解和实践这些内容,学习者能够为Java开发者的职业生涯打下坚实的基础。

    静态(static)方法重写(override)

    在面向对象编程语言中,如Java,方法重写(override)是一种重要的特性,它允许子类提供一个与父类相同签名的方法实现。这种方法的实现允许在运行时根据对象的实际类型来确定调用哪个版本的方法,这正是多态性的基础...

    传智播客Java培训毕向东Java基础课件01-08高清pdf

    2. **Java基础语法1**和**2**:这是Java语言的基础部分,涵盖变量、数据类型(包括基本类型和引用类型)、运算符、流程控制(如if语句、switch语句、循环语句for、while、do-while)、方法定义与调用、字符串处理等...

    java面试宝典java基础大全.pdf

    这份"Java面试宝典java基础大全.pdf"涵盖了Java基础知识的各个方面,旨在帮助面试者准备常见问题。以下是一些关键知识点的详细解释: 1. **单个.java源文件**:一个.java源文件可以包含多个类,但只能有一个公开的...

    java 基础练习题

    在Java中,多态主要体现在方法的重写(Override)和接口的实现。通过方法的重写,子类可以对父类的方法提供自己的实现,这使得在父类引用中调用子类对象的方法时,实际执行的是子类的版本。例如: ```java public ...

    Java基础编程实例

    Java基础编程实例是Java初学者入门的绝佳资源,它涵盖了Java语言的核心概念和技术。这个教程旨在帮助新手理解并掌握Java编程的基本元素,从而能够独立编写简单的程序。以下是一些主要的知识点: 1. **Java环境配置*...

    java基础题面试大全

    【Java基础面试题详解】 Java 是一种广泛应用的面向对象的编程语言,对于任何Java开发者来说,掌握基础是非常关键的。以下是一些常见的Java基础面试题及其解析: 1. **作用域的区别** Java中的访问修饰符包括...

    Java基础面试题

    Java 基础面试题详解 在 Java 面试中,了解一些基础知识点是非常重要的。本文将对 Java 基础面试题进行详细的解释,包括 final、finally、finalize 的区别、Anonymous Inner Class、& 和 && 的区别、HashMap 和 ...

    java基础测试题(附答案)

    Java是一种广泛使用的面向对象的编程语言,其基础知识包括类、对象、继承、多态、异常处理等核心概念。以下是对给定的Java基础测试题及其答案的详细解释: 1. **习题训练1** - 关于Java继承的描述,选项C错误。子类...

    传智播客_Java培训_毕向东_Java基础源代码

    这是一份源自传智播客,由资深讲师毕向东教授的Java培训课程的源代码集合。这份资源旨在帮助初学者深入理解Java编程语言的基础概念,通过实际的代码示例来提升学习效果。下面我们将详细探讨其中涉及的Java知识点。 ...

    从虚拟机角度看Java多态->(重写override)的实现原理

    在Java中,多态性主要通过继承、接口和方法重写(Override)来实现。这里我们将深入探讨从虚拟机(JVM)的角度来看,Java如何通过方法重写来实现多态。 首先,理解Java的类加载机制对于解析多态性至关重要。当Java...

    张孝祥java基础加强视频教程笔记

    【Java基础加强】张孝祥的Java教学视频涵盖了Java编程语言的基础到进阶知识,旨在帮助学习者巩固和提升Java编程技能。以下是根据教程笔记整理的一些关键知识点: 1. **Java简介**:Java是一种跨平台的面向对象的...

    java基础知识及框架平时工作总结

    本文将深入探讨Java基础知识和常用框架,以及一些开发过程中的经验总结。 首先,我们关注IDE工具。IntelliJ IDEA和Eclipse是Java开发者最常使用的两款集成开发环境。IntelliJ IDEA以其智能化的代码补全和优秀的用户...

    java代码-Override

    在Java编程语言中,`Override`关键字是一个非常重要的概念,它用于标识一个方法是重写了父类中的同名方法。这个关键词确保了子类的方法能够覆盖或实现接口中定义的抽象方法,从而提供了多态性,这是面向对象设计的...

    java基础习题java基础习题.doc

    Java 基础知识点概述 Java 语言是面向对象的编程语言,它的设计目标是具有良好的可移植性、安全性以及高效性。以下是一些关于Java基础的重要知识点: 1. **大小写敏感**:Java 语言是区分大小写的,变量、类名、...

    java很实用的基础知识

    11. **输入输出流(IO)**:Java的IO流用于读取和写入数据,分为字节流和字符流。NIO(New IO)提供了非阻塞I/O操作。 12. **线程**:Java内置了对多线程的支持,通过实现Runnable接口或继承Thread类创建线程。线程...

    java基础 教程 讲义

    3.5 多态:向上转型,向下转型,方法的覆盖(override),接口的实现,以及多态在提高代码可扩展性和灵活性上的应用。 除了这些基础知识,学习Java还需要掌握异常处理、文件操作、集合框架(List, Set, Map)、输入...

    分享一下@Override标签背后的小秘密

    Java 中的@Override标签的深入理解 @Override标签是一个非常重要的标签,但是一般情况下,我们只是知道它的基本用途,即用于标记方法的重写。但是,这个小小的标签蕴藏着很多有趣的秘密。今天,我们就来深入探讨...

    达内培训----JAVA基础知识

    这些知识点构成了Java编程的基础,通过达内的内部培训资料和习题,学习者可以逐步掌握这些概念,并通过实践提升自己的编程技能。对于初学者来说,理解和熟练运用这些基础知识是迈进Java世界的第一步。

Global site tag (gtag.js) - Google Analytics