javajava 接口的继承怎么能弥补单继承的缺点

首先,类的多继承有哪些缺点那:
第一,如果一个类继承多个父类,如果父类中的方法名如果相同,那么就会产生歧义。
第二,如果父类中的方法同名,子类中没有覆盖,同样会产生上面的错误。
所以,java中就没有设计类的多继承。
但是接口就设计成多继承,是因为接口可以避免上述问题:
首先,接口中的只有抽象方法和静态常量。
对于一个类实现多个接口的情况和一个接口继承多个接口的情况,因为接口只有抽象方法,具体方法只能由实现接口的类实现(也是因为实现类一定会覆盖接口中的方法),在调用的时候始终只会调用实现类(也就是子类覆盖的方法)的方法(不存在歧义),因此不存在 多继承的第二个缺点;而又因为接口只有静态的常量,但是由于静态变量是在编译期决定调用关系的,即使存在一定的冲突也会在编译时提示出错;而引用静态变量一般直接使用类名或接口名,从而避免产生歧义,因此也不存在多继承的第一个缺点。&
package testR
public class TestStatic extends Father{
public static void main(String[] args) {
System.out.println(TestStatic.i);
class TFather implements FirstFa{
public void outpr(){
System.out.println(i);
class Father implements FirstFa,SecondFa{
//虽然两个父接口中都有outpr()函数,但是子类中一定会覆盖,所以调用的肯定是子类的。
public void outpr(){
System.out.println(i);// 这样会报错,以为在编译期间,就会确定调用哪一个;编译不通过。
System.out.println(FirstFa.i);
System.out.println(SecondFa.i);
class TTFather implements Fa{
//同样这儿也必须覆盖,实现抽象方法。
public void outpr() {
// TODO Auto-generated method stub
System.out.println(FirstFa.i);
System.out.println(SecondFa.i);
interface FirstFa{
public void outpr();
interface SecondFa{
int i = 8;
public void outpr();
interface Fa extends FirstFa,SecondFa{
本文已收录于以下专栏:
相关文章推荐
继承性是面对对象程序设计中最重要的特征之一它允许在既有类的基础上创建新类,并可以根据所面对问题的不同情况对新类进行更具体,更详细的说明与操作。
通过代码看基类与派生类class A
网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。
java中一个类不能直接继承两个类比如说这样:
class A extends B,C
不能这样写,因为java不支持多继承,
但是你可以像下面这样实现继承多个类
class A extends B
java中为什么要单继承,多实现,总结如下:
若为多继承,那么当多个父类中有重复的属性或者方法时,子类的调用结果会含糊不清,因此用了单继承。
为什么是多实现呢?
通过实现接口拓展了类的功能,若实...
首先我们要明确一个事实,在Java语言中类只能单继承与某个类,却可以多集成接口。同时接口与接口之间可以多继承。为什么Java类只能单继承?
“Java是一种简单的,面向对象的,分布式的,解释型的,...
JAVA之旅(六)——
java也越来越深入了,大家加油吧!咱们一步步来
一.单例设计模式
什么是设计模式?
JAVA当中有23种设计模式,解决某一问题最有效的方法单例设计模式
首先,类的多继承有哪些缺点那:
第一,如果一个类继承多个父类,如果父类中的方法名如果相同,那么就会产生歧义。
第二,如果父类中的方法同名,子类中没有覆盖,同样会产生上面的错误。
所以,java中就没有...
* Copyright
the original author or authors.
* Licensed under the Apache License, V...
摘要 为什么说接口巧妙地实现了类似多继承的机制。使用接口的核心原因是,为了能够向上转型为多个基类型。即利用接口的多实现,可向上转型为多个接口基类型。
接口是”常量”和”方法”定义的集合。接口是一种特殊的抽象类。java类是单继承的。classB extends classA
java接口可以多继承。Interface3 extends Inter...
他的最新文章
讲师:王渊命
讲师:蔡栋
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)JAVA语句这个Factory factory=new Factory什么意思_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
JAVA语句这个Factory factory=new Factory什么意思
class aFrame extends JFrame implements ActionListener,MouseMotionListener,MouseListener,Serializable{ Factory factory=new Factory();//生成工厂 //生成两个迭代器
我有更好的答案
class aFrame extends JFrame implements ActionListener,MouseMotionListener,MouseListener,Serializable 这句的意思是 aFrame
继承 JFrame类并且实现 ActionListener,MouseMotionListener,MouseListener,Serializable这几个接口
就是new一个对象啊。只是这个对象是一个工厂,用来产生特定对象的。你可以百度一下设计模式:工厂模式。看看就知道了。
前面那一大段语句的意思呢?谢谢了,跪求呀
前面那一大段语句的意思呢?谢谢了,跪求呀
class aFrame extends JFrame implements ActionListener,MouseMotionListener,MouseListener,Serializable这段???extends 是关键字
继承的意思 。继承的是类(类是具体的)implements 是关键字
实现的意思。实现的是接口(接口时抽象的)java中只能单继承,实现是可以弥补java单继承的缺陷实现多继承。这段话是说aFrame这个类继承了JFrame这个类。实现了ActionListener,MouseMotionListener,MouseListener,Serializable这些接口。这些接口都有具体的功能,可以参考api
Factory factory是 为类aFrame定义一个属性。=new Factory();是给这个属性赋初值。
那前面那一大段语句什么意思呀?跪求
class aFrame extends JFrame implements ActionListener,MouseMotionListener,MouseListener,Serializable这个吧。定义一个类,class是定义类的关键字,aFrame是这个类的名字。extends 是继承的关键字,java是单继承多实现的。这个类继承JFrame类。实现implements后面的四个接口。继承JFrame可以获得这个类的很多方法和属性。接口就是标准,需要定义的这个类去实现4个接口定义的所有方法。
为您推荐:
其他类似问题
等待您来回答日18:06:04
面向对象编程下
作者:数据分析玩家
1.简述抽象类的概念
抽象类是为了更好的对类加以分类,抽象类通常情况下是作为一个类族的最顶层的父类,如植物,并用最底层的类来描述现实世界中的具体的事物
11.简述接口的定义
接口与类是并列的概念
接口就是抽象方法与数值型常量的集合,接口里面只能有一些抽象方法与数值型常量,不能有普通方法,接口本质上就是一个更加严格,更加特殊的抽象类,不能在定义一个子类去继承它,即接口只能被实现,不能被继承
14.简述接口与抽象类的异同点
相同点:接口本质上就是一个更加严格的,更加特殊的抽象类
1&接口可以近似的当做一个抽象类,但是却不是抽象类,更不是类,接口只能被一个类实现,但是抽象类却可以被一个类继承
2&接口中的方法不允许有方法体,但是抽象类中的方法却允许有方法体
3&接口可以实现多继承,但是抽象类只能实现单继承
2.简述抽象方法的概念
1&没有执行体的方法叫做抽象方法,抽象方法要求末尾必须得加分号,前面必须得加abstract进行修饰
如public&abstract&&void&&&fun1();
2&抽象方法通过子类的实现可以变成普通的方法
3&抽象方法不存在所谓重写的问题,却存在着实现的问题
3.简述抽象方法与抽象类之间的关系
含有抽象方法的类一定是抽象类,抽象类不一定含有抽象方法,这就是有名无实
4.简述抽象类[接口]与多态之间的关系
抽象类可以实现多态
抽象类不可以定义出类的实例对象,但是却可以定义出抽象类的引用,因为植物等只是一个概念,并没有具体的实物,抽象类可以实现多态,一个抽象类的引用可以调用子类从父类继承过来的成员,但是却不能调用子类对象所特有的成员,这恰好是多态的本质
5.简述接口与多态之间的关系
接口可以实现多态
接口不可以定义出接口的实例对象,但是却可以定义出接口的引用,一个接口的引用只能调用子类从父类继承过来的成员,但是却不能调用子类对象所特有的成员
6.简述final关键字的含义与用途
含义:最后的,最终的,表示这个事物已经很完美了,如果这个事物被某个事物继承下来,则相应的成员不能再被修改了
用途:1&用final来修饰整个类
&&&&&2&用final来修饰类中的成员,即属性与方法
7.简述final修饰整个类的具体用法
若一个类的前面加上一个final,表示这个类已经很完美了,不能再定义一个子类去继承它,进行相应的修改,否则会出错
8.简述final修饰类中属性的具体用法
用final修饰过的变量叫做常变量,此时java中的final相当于c语言中的const,表示该变量必须被赋值,并且只能被赋一次值,从此以后数值不能再发生更改;因此用final来修饰类中的若干个属性表示该属性必须被赋值并且只能被赋一次值,注意默认值不算真正的赋值
注意:在一个类的普通方法内部不可以修改final修饰过的成员变量的数值
9.简述final修饰类中方法的具体用法
在一个类中,若一个方法的前面加上一个final,表示这个方法已经很完美了,虽然该方法可以被子类继承,但是不能被子类重写,否则会出错
10.在java中被final修饰过的属性如何进行初始化
被final修饰过的属性其初始化包括两种方式,且只能二选一:
1&在类中定义成员变量的同时进行初始化
2&通过类中的构造方法进行初始化(所有的构造方法都要指定)
[因为在创建完类对象之后,系统首先为该对象分配好内存空间,然后由类自动调用相应的构造函数,进行初始化]
12.简述接口用法的几个注意事项
1&接口中定义的属性必须是public&static&final的[数值型常量],接口中定的方法必须是public&abstract的[抽象方法],这些修饰符可以省略,为默认状态,final关键字与abstract关键字不能同时修饰同一个变量
2&一个类只能实现某个接口,但是不能继承某个接口
3&java中的接口可以继承接口,并且可以实现多继承,这在一定程度上弥补了java中的类只能实现单继承带来的缺陷
4&如果一个类只实现了某个接口的部分方法,则该类必须要声明为抽象类,因为含有抽象方法的类为抽象类
如果一个类要实现某个接口中的方法,在子类方法返回值的前面必须加上public,因为方法重写权限不能更加严格
5&一个类可以在继承一个父类的同时实现一个或多个接口,但是extends关键字必须要写在implements关键字的前面
6&接口可以实现多态
7&接口相互之间不存在实现的问题,但是存在继承的问题,可以实现多继承&&&interface&&A&&&extends&B,C
13.简述接口的重要性
1&学好接口有助于学习事件模型,容器,线程等重要知识
[用一个类来实现某个接口,并将其发扬光大,通过这种方法来创建一个线程]
2&java中的接口可以实现多继承,这在一定程度上弥补了java中的类只能实现单继承带来的缺陷
3&通过接口可以实现不相关类的相同行为
如:java规定:所有可以完成自我复制功能的类必须要实现java.long.colneable接口,但该接口却是空的,没有任何内容,目的只是为了起一个标志作用
4&java提供了不同的类进行相互协作的平台
[事件模型&&主板]
5&接口是我们了解一个类功能的重要途径
Java中的整个容器框架就是以接口的方法建立起来的,实现不同接口的类完成的是不同的功能
15.简述实现与重写的关系
实现在一定程度上来讲就是继承
日19:45:04
本文已收录于以下专栏:
相关文章推荐
1。二维数组的应用,键盘输入9 个double类型数据,将数据转为int型。
import java.util.S
public class Demo07 {
public s...
对字段操作
更新字段名
alter table TABLE_NAME rename column column_old to column_
网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。
提到面向对象编程,我要提到一点,这个应该是java中最核心,也是最难的一部分了,莫非难于上青天??。
但是,,,不要担心,小编自会让你攀顶,突破阻碍了。。
先来谈谈什么是面向对...
alter table `student` add constraint `pk_student` primary key `student`(`id`);
# 表明  student ...
日18:06:04
面向对象编程下
作者:数据分析玩家
1.简述抽象类的概念
抽象类是为了更好的对类加以分类,抽象类通常情况下是作为一个类族的最顶层的父类,如植物,并用最底层的类来描...
01 成员变量和局部变量的区别
在代码中位置不同
成员变量:在类中方法外
局部变量:在方法定义中或方法声明上
在内存中的位置不同
成员变量:在堆内存(成员变量属于对象,对象进堆内存)
局部变量:在...
日18:54:24
面向对象编程下重点总结
作者:数据分析玩家
1.简述面向对象中继承与多态的定义
继承:一个新类从已有的类那里获得其已有的属性与方法,这种现象叫做继承
多态:一个父...
日18:19:54
JAVA面向对象编程上重点总结
作者:数据分析玩家
1.简述面向对象中封装的定义
在面向对象中,所有的类通常情况下很少让外部类直接访问类内部的属性和方法...
第一章: Java面向对象编程概述
1.1:面向对象 :(Object Oriented)OO;面向对象分析(OOA);面向对象设计(OOD);面向对象编程  (OOP)。
1.2:类和对象:类是...
1、抽象类总结:package com.laobi.day09;
public class AbstratorDemo {
* 抽象类:
* 抽象:笼统,模糊,看不懂!不具体
他的最新文章
讲师:王渊命
讲师:蔡栋
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&

我要回帖

更多关于 java 接口的继承 的文章

 

随机推荐