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

所属分类: 软件编程 / java 阅读数: 34
收藏 0 赞 0 分享

本文实例讲述了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程序设计有所帮助。

更多精彩内容其他人还在看

java 中maven pom.xml文件教程详解

这篇文章主要介绍了java 中maven pom.xml文件教程详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

spring boot整合netty的实现方法

这篇文章主要介绍了spring boot整合netty的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Netty与Spring Boot的整合实现

这篇文章主要介绍了Netty与Spring Boot的整合的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring动态加载bean后调用实现方法解析

这篇文章主要介绍了Spring动态加载bean后调用实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

java实现画图板上画一条直线

这篇文章主要为大家详细介绍了java实现画图板上画一条直线,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java通过python命令执行DataX任务的实例

今天小编就为大家分享一篇Java通过python命令执行DataX任务的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

springBoot集成redis的key,value序列化的相关问题

这篇文章主要介绍了springBoot集成redis的key,value序列化的相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

java实现登录案例

这篇文章主要为大家详细介绍了java实现登录案例的相关代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java解决请求跨域的两种方法

这篇文章主要为大家详细介绍了java解决请求跨域的两种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

SpringBoot集成Beetl后统一处理页面异常的方法

这篇文章主要介绍了SpringBoot集成Beetl后统一处理页面异常的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享
查看更多