Java的覆写操作实例分析

 更新时间:2019年10月11日 11:48:55   作者:cakincqm  
这篇文章主要介绍了Java的覆写操作,结合实例形式分析了java属性覆写及super调用父类方法覆写相关操作技巧,需要的朋友可以参考下

本文实例讲述了Java的覆写操作。分享给大家供大家参考,具体如下:

一 属性覆写

1 点睛

所谓属性覆写,指的是子类定义和父类定义之中名称相同的属性。

2 代码

class Book
{
  String info = "Hello World." ;  // 如果加上private,1处的代码就会编译不过
}
class ComputerBook extends Book
{
  int info = 100 ;  // 属性名称相同
  public void print()
  {
    System.out.println(info) ;
    System.out.println(super.info) ;     // 1处代码
  }
}
public class OverrideData
{
  public static void main(String args[])
  {
    ComputerBook cb = new ComputerBook() ; // 实例化子类对象
    cb.print() ;
  }
}

3 运行

100
Hello World.

4 说明

该代码没有太大的意义,它并没有实现真实的覆写。为了满足类的封装型,类中的属性一般都需要private封装,一旦封装之后,子类根本就“看不见”父类的属性成员,子类定义的同名属性成员,其实就是一个“全新的”数据成员,所谓的覆写操作就没意义了。

二 super调用父类方法

1 点睛

子类中可以通过super.方法()调用父类中被覆写的方法。

2 代码

class Person
{
  String name;
  int age;
  public String talk( )
  {
    return "I am " + this.name + ", I am " + this.age + " years old";
  }
}
class Student extends Person
{
  String school;
  public Student( String name, int age, String school )
  {
    // 分别为属性赋值
    this.name = name;  //super.name = name;
    this.age = age;   //super.age = age;
    this.school = school;
  }
  // 此处覆写Person中的talk()方法
  public String talk( )
  {
    return super.talk()+ ", I am from " + this.school ;
  }
}
public class Override2
{
  public static void main( String[] args )
  {
    Student s = new Student( "Jack ", 25, "HAUT" );
    // 此时调用的是子类中的talk()方法
    System.out.println( s.talk() );
  }
}

3 运行

I am Jack , I am 25 years old, I am from HAUT

4 说明

在完成方法覆写时,需要注意以下几点:

  • 覆写方法的返回类型必须和被覆写的方法的返回类型一致。
  • 被覆写的方法不能为static。
  • 被覆写的方法不能拥有比父类更严格的访问控制权限。

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • spring Retryable注解实现重试详解

    spring Retryable注解实现重试详解

    这篇文章主要介绍了spring Retryable注解实现重试详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • java报错状态码问题

    java报错状态码问题

    这篇文章主要介绍了java报错状态码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java中Stringbuild,Date和Calendar类的用法详解

    Java中Stringbuild,Date和Calendar类的用法详解

    这篇文章主要为大家详细介绍了Java中Stringbuild、Date和Calendar类的用法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-04-04
  • Java8 lambda表达式2种常用方法代码解析

    Java8 lambda表达式2种常用方法代码解析

    这篇文章主要介绍了Java8 lambda表达式2种常用方法代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • java RocketMQ快速入门基础知识

    java RocketMQ快速入门基础知识

    这篇文章主要介绍了java RocketMQ快速入门基础知识,所以RocketMQ是站在巨人的肩膀上(kafka),又对其进行了优化让其更满足互联网公司的特点。它是纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。,需要的朋友可以参考下
    2019-06-06
  • 使用JAXBContext轻松实现Java和xml的互相转换方式

    使用JAXBContext轻松实现Java和xml的互相转换方式

    这篇文章主要介绍了依靠JAXBContext轻松实现Java和xml的互相转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 深入浅出讲解Java集合之Map接口

    深入浅出讲解Java集合之Map接口

    这篇文章主要介绍了深入浅出讲解Java集合之Map接口,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Servlet会话技术基础解析

    Servlet会话技术基础解析

    这篇文章主要介绍了Servlet会话技术基础解析,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • SpringCloud中NacosNamingService的作用详解

    SpringCloud中NacosNamingService的作用详解

    这篇文章主要介绍了SpringCloud中NacosNamingService的作用详解,NacosNamingService类完成服务实例注册,撤销与获取服务实例操作,NacosNamingService初始化采用单例模式,使用反射生成,需要的朋友可以参考下
    2023-11-11
  • springboot logback如何从apollo配置中心读取变量

    springboot logback如何从apollo配置中心读取变量

    这篇文章主要介绍了springboot logback如何从apollo配置中心读取变量的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08

最新评论