Java中多继承的实现
1 问题
Java是一种面向对象的只允许单继承的语言,那么怎样在Java中实现多继承呢?
2 方法
多层继承
如果要直接继承类,子类是不可以直接多继承的,但是可以通过多层继承来实现多继承,但多层继承一般不建议超过三次。接口
接口可用于继承也可用于其它,比较灵活。定义类实现接口,需要实现其所有父接口的方法。
多层继承: package weekbook; class A{//父类A类 private int num=10; public int getNum(){ return this.num; } public void fun(){ System.out.println("你今天天气真好!"); } } class B extends A{//B类继承A类 private String name="张三"; public String getName(){ return this.name; } public void fun(){//方法覆写 System.out.println(this.getNum()); //父类私有域被继承但不可直接使用,需通过getter方法间接获得私有域的内容 //子类中没找到那么会去父类中寻找 } } class C extends B{//C类继承B类,相当于间接继承A类 private String name="李四"; public String getName(){ return this.name; } public void fun(){//方法覆写(结果为覆写后的内容) System.out.println(this.getName()); System.out.println(this.name); } } public class Test{ public static void main(String[] args){ A a=new A(); a.fun(); print(new B());//向上转型(优点在于子类可自动进行向上转型,可实现参数的统一) print(new C()); } public static void print(A a){ a.fun(); } } 接口: package weekbook; interface IA{//父接口A(接口为更纯粹的抽象类,结构组成只含全局常量和抽象方法) void funA(); } interface IB {//父接口B(接口前添加I用以区分接口) void funB(); } interface CImpl extends IA,IB{//接口可继承多个父接口,用,分隔开即可,子接口的命名可选择较为重要的父接口进行命名或自行命名,一般子接口后添加Impl用以区分 void funC(); } class Impl implements CImpl{//定义类实现接口(也可直接实现父接口(多个)) public void funC(){//抽象方法的实现 System.out.println("昨天吃串串!"); } public void funA(){ System.out.println("今天吃火锅!"); } public void funB(){ System.out.println("明天吃冒菜!"); } } public class Test1{ public static void main(String[] args){ Impl im=new Impl();//实例化对象 im.funA(); im.funB(); im.funC(); } } |
3 结语
针对如何实现多继承的问题,提出利用多层继承和接口的方法,通过实验,证明该方法是有效的,本文的每种方法都有各自的短处,多层继承一般不超过三层 。接口实现多继承时,一个Java接口加入一个新的方法时,所有实现这个接口的类都得编写具体的实现。在未来,我们可以探索利用成员内部类来实现多继承的方法。
Java中多继承的实现相关推荐
- java 的继承_关于java中的继承
我们都知道Java中的继承是复用代码.扩展子类的一种方式,继承使得Java中重复的代码能够被提取出来供子类共用,对于Java程序的性能以及修改和扩展有很大的意义,所以这是一个非常重要的知识点. 那么对 ...
- java中抽象类继承抽象类_用Java中的抽象类扩展抽象类
java中抽象类继承抽象类 示例问题 当我创建Java :: Geci抽象类AbstractFieldsGenerator和AbstractFilteredFieldsGenerator我遇到了一个不 ...
- java中抽象类继承抽象类_Java中的抽象类用示例解释
java中抽象类继承抽象类 Abstract classes are classes declared with abstract. They can be subclassed or extende ...
- java中的继承(一)
在java中,所有的类都有一个默认的父类Object,即使我们没有显式的去继承这个类.在Object类中定义了一些方法,其中有几个方法是我们必须掌握的,比如equals方法,hashCode方法,wa ...
- Java中 利用继承的思想实现动物的分类,将动物分为水生动物和陆生动物,有其动物的属性和特征,又有其属性和特征,编程模拟。
Java中 利用继承的思想实现动物的分类,将动物分为水生动物和陆生动物,有其动物的属性和特征,又有其属性和特征,编程模拟. 前言 动物在拥有自己本身所具有的特征的同时,还应该具有所在大类所具有的动物特 ...
- Java中的继承 与 多态(中)
先导: 我们在<Java中的继承 与 多态(上)>当中讲解了如下几个问题, 1.继承是什么 2.super关键字 3.特殊考点-父子类中不同代码块的实现顺序 所以现在我们对于继承 ...
- 解析java中的继承
解析java中的继承 1 含义 在符合当代社会的约定俗成的逻辑的情况下,很多类具有相同的属性和方法,我们这些共有的属性和方法抽象成一个类后,通过extends关键字使得很多类与抽象成的类建立父子关系, ...
- 利用JAVA中关于继承的相关知识求得圆柱体体积并输出
利用JAVA中关于继承的相关知识求得圆柱体体积并输出 Write a program: 1)Define a Circle class and a Cylinder class, which is d ...
- java中子类继承父类程序执行顺序问题
为什么80%的码农都做不了架构师?>>> Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分,它们的执行顺序相对来说 ...
- java继承总结_JAVA笔记:Java中的继承总结
继承:在Java中使用extends关键字来实现类的继承 ,extends意思就是派生,所以子类也叫派生类,继承的主要目的是扩展类的内容 操作格式: class A{}; class B exten ...
最新文章
- Android中removeCallbacks失效原因
- 安装setuptools与pip
- 作为程序员,这些梗你都答得上来吗?
- Nacos完全关闭配置
- php 重复写入数据,完美解决Thinkphp3.2中插入相同数据的问题
- java包装类方法_Java包装类
- Python input 函数 -Python零基础入门教程
- 一篇文章解释struts常用功能
- 学习Windows2008——常用工具及命令(包括核心版部分命令)
- 协同过滤推荐算法-----向量之间的相似度
- 7-39 龟兔赛跑 (20 分) 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。T分钟后乌龟和兔子谁跑得快?PTA:中M2021春C、Java入门练习第I段—变量、表达式、分支、循环
- basic auth java_java发送带Basic Auth使用 httpclient自带的认证方式
- 蔚来、小鹏、理想自动驾驶能力的纵向演进与横向比较
- SAP中汇率固定配置和应用分析测试
- 深度学习21天——卷积神经网络(CNN):实现mnist手写数字识别(第1天)
- Alist保姆级搭建教程
- AndroidStudio小松鼠版本添加jitpack.io位置
- echarts.js刻度标签实现富文本实现中文+图片的效果解决方法
- Windows 11 KB5011563正式推送,之前本人遇到的两个小问题总算解决了
- Google组织架构不学传统大公司
热门文章
- 【reverse】通俗易懂的gcc内联汇编入门+示例:实现花指令
- 连接池以及连接池的使用
- 安装pytorch报错及解决
- char、int、long它们各占几个字节?占几位?
- Siemens Simcenter FloEFD 2021.2.0 for Catia V5
- MATLAB矩阵生成
- 英伟达守望先锋巡回赛开启 上海/深圳/沈阳/重庆英雄齐聚
- adb删除软件_苹果免越狱如何安装ipa 苹果免越狱安装软件安装教程【详解】
- 【精华帖】使用PS将图片背景变透明
- python3安装要钱吗_3b1b/manim数学动画引擎安装教程(2020-8月)