java 方法继承方法_java的继承原理与实现方法详解
本文实例讲述了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的继承原理与实现方法详解相关推荐
- java接口废弃注释_Java注释Override、Deprecated、SuppressWarnings详解
四.如何对注释进行注释 这一节的题目读起来虽然有些绕口,但它所蕴涵的知识却对设计更强大的java程序有很大帮助. 在上一节讨论了自定义注释,由此我们可知注释在J2SE5.0中也和类.接口一样.是程序中 ...
- java 反射 参数 注解_Java编程之反射中的注解详解
"注解"这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题.我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些"注解&quo ...
- java生成字符串数组_Java 生成随机字符串数组的实例详解
Java 生成随机字符串数组的实例详解 利用Collections.sort()方法对泛型为String的List 进行排序.具体要求: 1.创建完List之后,往其中添加十条随机字符串 2.每条字符 ...
- java.exe 安装程序_java实现可安装的exe程序实例详解
java实现可安装的exe程序实例详解 通过编写Java代码,实现可安装的exe文件的一般思路: 1.在eclipse中创建java项目,然后编写Java代码,将编写好的Java项目导出一个.jar格 ...
- java list 重复数据_java 查找list中重复数据实例详解
java 查找list中重复数据实例详解 需求: 查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...
- java 二维数组 的方法和属性_Java一维数组和二维数组详解(Java必备知识)
数组是最为常见的一种数据结构,分为一级数组,二维数组以及多维数组.是把相同数据类型的元素,用一个标识符封装到一起的基本类型数据序列或对象序列. 目录 一维数组 创建一维数组 给一维数组赋值 获取数组的 ...
- java htmlparser 使用教程_Java解析HTML之HTMLParser使用与详解
HTMLParser将解析过的信息保存为一个树的结构.Node是信息保存的数据类型基础.请看Node的定义:public interface Node extends Cloneable;Node中包 ...
- java中循环语句_Java语法基础之循环结构语句详解
一.循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循 ...
- java 设置pdf 编码格式_Java如何设置PDF文档背景色详解
前言 一般生成的PDF文档默认的文档底色为白色,我们可以通过一定方法来更改文档的背景色,以达到文档美化以及保护双眼的作用. 以下内容提供了Java编程来设置PDF背景色的方法.包括: 设置纯色背景 设 ...
- java一维数组初始化_Java一维数组,初始化一维数组详解
Java语言当中数组必须先初始化,之后才能够使用,那么下面的文章就来给大家讲一下初始化一维数组方面的知识. 所谓的初始化指的就是为数组的数组元素分配内存空间,并且为每一个个数组元素赋初始值. 那么可不 ...
最新文章
- docker安装Elasticsearch7.6集群并设置密码
- 关于MNIST数据集的处理
- zabbix mysql路径_ZABBIX数据库迁移目录
- python中list作为函数参数_在python中list作函数形参,防止被实参修改的实现方法
- Get Started with Field Service
- HELP! I’m an Object Factory!
- SAP Spartacus cost center list的数据源分析
- CORS(跨域资源共享)
- form表单的提交地址一定要是完整的绝对地址
- Servlet文件下载
- 利用Scrapy爬取拉勾网某职位信息
- 端口映射公网IP访问内网服务器
- 【教你Win7下如何激活快速启动栏】
- 毕节市搜索引擎优化_毕节市网站建设58同城
- 移动端WEB前端开发最佳实践
- 享受蓝牙(一): 开始享受
- LoRa SX1278/76驱动原理 附代码
- C++ 字符串和数字拼接
- 具有超能力的对话式机器人性能如何? #Chatsonic AI
- shienblink 振动/敲击检测传感器详解