Java类的继承原理与用法分析

 更新时间:2020年02月12日 09:57:11   作者:扎心了,老铁  
这篇文章主要介绍了Java类的继承原理与用法,结合实例形式分析了java类的继承相关原理、使用方法及操作注意事项,需要的朋友可以参考下

本文实例讲述了Java类的继承。分享给大家供大家参考,具体如下:

为什么要继承?

观察两个类的成员组成

 

提取相同的属性和方法

宠物是父类,狗和金鱼是子类。子类具有父类的属性和方法。

继承定义

是使用已存在的类作为基础建立新类的技术。

单一继承:只有一个父类。

父类可以叫做基类、超类。子类可以叫做派生类。

继承注意事项

子类可以继承父类中的成员(属性和方法)。

但是需要注意:

1.private的成员不能继承

2.子类和父类不在同一个程序包,使用默认访问权限的成员不能继承

3.构造器不能继承。

继承原则

设计继承关系要符合里氏替换原则。is-a关系

子类是父类,可以完全替换掉父类,代码没有任何影响。

里氏替换原则(LSP):在一个软件系统中,子类对象可以替换所有使用的父类对象,且程序行为没有变化

重写

在子类中,子类中的方法名、参数、返回值和父类中的完全相同,那么叫做子类重写了父类中的方法。

只有实例成员方法才能重写。静态成员方法、静态变量、实例成员变量不能重写,隐藏。

重写和隐藏的根本区别

重写可以实现多态,隐藏不能实现多态

重写注意事项

1.名字必须完全一致

2.参数 父类擦除后与子类一致;或者与子类完全一致。

3.返回值类型 可以完全一致,如果是引用类型,允许子类的返回值类型是父类的 子类

4.访问修饰符 子类不能比父类更严格。

5.异常处理 不能比父类范围更大。

为什么要重写?

1.子类修改了父类中的功能。

2.子类扩展了父类中的功能。

class 父类手机{
 public void 来电显示(){
     显示电话号;
  }
}
class 子类手机 extends 父类手机{
 public void 来电显示(){
     显示电话号;
     显示人名;
     显示地址;
  }
}

super

表示父类范围

super关键和this作用类似,是被屏蔽的成员变量或者成员方法或变为可见,或者说用来引用被屏蔽的成员变量和成员成员方法。
不过super是用在子类中,目的是访问直接父类中被屏蔽的成员,注意是直接父类(就是类之上最近的超类)。

super的用法

第一、在子类构造方法中要调用父类的构造方法,用“super(参数列表)”的方式调用,参数不是必须的。同时还要注意的一点是:“super(参数列表)”这条语句只能用在子类构造方法体中的第一行。

第二、当子类方法中的局部变量或者子类的成员变量与父类成员变量同名时,也就是子类局部变量覆盖父类成员变量时,用“super.成员变量名”来引用父类成员变量。当然,如果父类的成员变量没有被覆盖,也可以用“super.成员变量名”来引用父类成员变量,不过这是不必要的。

第三、当子类的成员方法覆盖了父类的成员方法时,也就是子类和父类有完全相同的方法定义(但方法体可以不同),此时,用“super.方法名(参数列表)”的方式访问父类的方法。

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

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

相关文章

  • 基于Spring概念模型:PathMatcher 路径匹配器

    基于Spring概念模型:PathMatcher 路径匹配器

    这篇文章主要介绍了Spring概念模型:PathMatcher 路径匹配器,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • spring boot 自定义参数过滤器,把传入的空字符转换成null方式

    spring boot 自定义参数过滤器,把传入的空字符转换成null方式

    这篇文章主要介绍了spring boot 自定义参数过滤器,把传入的空字符转换成null方式。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java 封装的使用详解

    Java 封装的使用详解

    在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制
    2021-11-11
  • 在Spring Boot中使用Spark Streaming进行实时数据处理和流式计算的步骤

    在Spring Boot中使用Spark Streaming进行实时数据处理和流式计算的步骤

    这篇文章主要介绍了在Spring Boot中使用Spark Streaming进行实时数据处理和流式计算,通过本文的介绍,我们了解了在Spring Boot中使用Spark Streaming进行实时数据处理和流式计算的详细步骤,需要的朋友可以参考下
    2024-03-03
  • java数组、泛型、集合在多态中的使用及对比

    java数组、泛型、集合在多态中的使用及对比

    本文主要介绍了java数组、泛型、集合在多态中的使用及对比。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-03-03
  • 详解Java Proxy动态代理机制

    详解Java Proxy动态代理机制

    今天给大家带来的是关于Java的相关知识,文章围绕着Java动态代理机制展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • java并发编程之深入理解Synchronized的使用

    java并发编程之深入理解Synchronized的使用

    文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下Java线程同步中的一个重要的概念synchronized,希望能够给你有所帮助
    2021-06-06
  • java线程池合理设置最大线程数和核心线程数方式

    java线程池合理设置最大线程数和核心线程数方式

    这篇文章主要介绍了java线程池合理设置最大线程数和核心线程数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java中的关键字_动力节点Java学院整理

    Java中的关键字_动力节点Java学院整理

    关键字也称为保留字,是指Java语言中规定了特定含义的标示符。对于保留字,用户只能按照系统规定的方式使用,不能自行定义
    2017-04-04
  • Spring Boot将项目打包成war包的操作方法

    Spring Boot将项目打包成war包的操作方法

    这篇文章主要介绍了Spring Boot将项目打包成war包的操作方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09

最新评论