本文实例讲述了java的继承原理与实现方法。分享给大家供大家参考,具体如下:

继承

1.java中是单继承的。每个子类只有一个父类。

语法:子类 extends 父类

2.在java中,即使没有声明父类,也有一个隐含的父类,就是Object类

3.在子类中可以使用super来调用父类的方法

4.继承中的构造方法问题

在new一个子类实例的过程中,会优先自动调用父类默认的无参数构造方法,然后再调用子类的构造方法。如果父类没有默认的构造方法,只有带参数的构造方法,此时就会出错。

除了由jvm自动调用父类默认的构造方法外,子类还可以可以通过super方法调用父类的构造方法,尤其是当父类没有默认的构造方法,只有带参数的构造方法的情况下,那么在子类中必须使用super的方式调用父类带参数的构造方法。

5.动态绑定和静态绑定

6.父子类型转换

向上类型转换:父类型的引用指向子类型的实例

Child c = new Child();

Parent p = c;

向下类型转换:在java中使用强制转换的方式实现向下类型转换,即父类型的变量可以赋值给子类型的变量,但是不一定每次向下类型转换都会成功,这取决于这个父类变量的动态类型(即引用的对象类型)是不是这个子类或者是这个子类的子类。

public class Bind{

public static void main(String[] args) {

//成功

Parent p = new Child();

Child c = (Child)p;

//失败

Parent p1 = new Parent();

Child c1 = (Child)p1;

}

}

结果:

Exception in thread "main" parent构造函数

child构造函数

parent构造函数

java.lang.ClassCastException: practice.Parent cannot be cast to practice.Child

at practice.Bind.main(Bind.java:13)

7.可见性重写

重写方法时,一般并不会修改方法的可见性。但是如果修改方法可见性的时候,那么重写时,子类的方法不能降低父类方法的可见性:如果父类中方法为public的,那么子类中的方法也必须为public的;如果父类中的方法为protected的,那么子类中的方法可以为protected,也可以为public的。

这是因为在java中继承是“is-a”的关系,即子类对象也属于父类。子类必须支持父类所有对外的行为。

8.使用final修饰的方式避免继承

final修饰类,表示该类不能被继承;final修饰非final中的方法,表示该方法不能在子类中被重写。

9.继承的优劣势

好处:实现代码复用,公共属性和方法放在父类中,子类只需要关注子类特有的就可以了。

不同子类的对象可以更方便地被统一处理(这里也有多态特性)。

缺点:继承破坏封装

如何避免使用继承?

(1)使用final关键字

(2)优先使用组合而非继承

(3)使用接口

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

java 方法继承方法_java的继承原理与实现方法详解相关推荐

  1. java接口废弃注释_Java注释Override、Deprecated、SuppressWarnings详解

    四.如何对注释进行注释 这一节的题目读起来虽然有些绕口,但它所蕴涵的知识却对设计更强大的java程序有很大帮助. 在上一节讨论了自定义注释,由此我们可知注释在J2SE5.0中也和类.接口一样.是程序中 ...

  2. java 反射 参数 注解_Java编程之反射中的注解详解

    "注解"这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题.我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些"注解&quo ...

  3. java生成字符串数组_Java 生成随机字符串数组的实例详解

    Java 生成随机字符串数组的实例详解 利用Collections.sort()方法对泛型为String的List 进行排序.具体要求: 1.创建完List之后,往其中添加十条随机字符串 2.每条字符 ...

  4. java.exe 安装程序_java实现可安装的exe程序实例详解

    java实现可安装的exe程序实例详解 通过编写Java代码,实现可安装的exe文件的一般思路: 1.在eclipse中创建java项目,然后编写Java代码,将编写好的Java项目导出一个.jar格 ...

  5. java list 重复数据_java 查找list中重复数据实例详解

    java 查找list中重复数据实例详解 需求: 查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...

  6. java 二维数组 的方法和属性_Java一维数组和二维数组详解(Java必备知识)

    数组是最为常见的一种数据结构,分为一级数组,二维数组以及多维数组.是把相同数据类型的元素,用一个标识符封装到一起的基本类型数据序列或对象序列. 目录 一维数组 创建一维数组 给一维数组赋值 获取数组的 ...

  7. java htmlparser 使用教程_Java解析HTML之HTMLParser使用与详解

    HTMLParser将解析过的信息保存为一个树的结构.Node是信息保存的数据类型基础.请看Node的定义:public interface Node extends Cloneable;Node中包 ...

  8. java中循环语句_Java语法基础之循环结构语句详解

    一.循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循 ...

  9. java 设置pdf 编码格式_Java如何设置PDF文档背景色详解

    前言 一般生成的PDF文档默认的文档底色为白色,我们可以通过一定方法来更改文档的背景色,以达到文档美化以及保护双眼的作用. 以下内容提供了Java编程来设置PDF背景色的方法.包括: 设置纯色背景 设 ...

  10. java一维数组初始化_Java一维数组,初始化一维数组详解

    Java语言当中数组必须先初始化,之后才能够使用,那么下面的文章就来给大家讲一下初始化一维数组方面的知识. 所谓的初始化指的就是为数组的数组元素分配内存空间,并且为每一个个数组元素赋初始值. 那么可不 ...

最新文章

  1. docker安装Elasticsearch7.6集群并设置密码
  2. 关于MNIST数据集的处理
  3. zabbix mysql路径_ZABBIX数据库迁移目录
  4. python中list作为函数参数_在python中list作函数形参,防止被实参修改的实现方法
  5. Get Started with Field Service
  6. HELP! I’m an Object Factory!
  7. SAP Spartacus cost center list的数据源分析
  8. CORS(跨域资源共享)
  9. form表单的提交地址一定要是完整的绝对地址
  10. Servlet文件下载
  11. 利用Scrapy爬取拉勾网某职位信息
  12. 端口映射公网IP访问内网服务器
  13. 【教你Win7下如何激活快速启动栏】
  14. 毕节市搜索引擎优化_毕节市网站建设58同城
  15. 移动端WEB前端开发最佳实践
  16. 享受蓝牙(一): 开始享受
  17. LoRa SX1278/76驱动原理 附代码
  18. C++ 字符串和数字拼接
  19. 具有超能力的对话式机器人性能如何? #Chatsonic AI
  20. shienblink 振动/敲击检测传感器详解

热门文章

  1. 要「自我颠覆」的华为Mate 10来了
  2. 做程序界中的死神,提升斩魂刀
  3. CODESYS领导到访创龙科技,共同助力工业控制软硬件技术发展
  4. 为什么打印还要另存为_打印的时候为什么显示文件另存为
  5. Mac应用程序无法打开提示不明开发者或文件损坏的处理方法
  6. 部分淘宝店超低价卖商品是骗局
  7. 新加硬盘但计算机里找不着,电脑开机找不到硬盘怎么办
  8. 开源手游暗黑世界客户端部分代码注解续
  9. PgSql时间格式转换
  10. 阅读笔记--现代操作系统