首页 > 编程语言 >java--类单继承多实现,接口多继承

java--类单继承多实现,接口多继承

时间:2023-07-14 16:11:17浏览次数:39  
标签:java 类单 继承 void 接口 public extends method

 

继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

java继承分为:

    单继承:一个子类最多只能有一个父类。

    多继承:一个子类有两个以上的父类。一个接口可以继承多个类,一个类可以实现多个接口。

为什么说类是单继承的?

1、java的类只支持单继承,因为多继承会带来二义性。例如类D同时继承了B和C,类B和C中都有方法method( ),而且方法method是有方法体的,可以重写内容,那么A就不能确定到底该继承哪个类的d方法。

2、类是单继承、多实现的,也就是说一个子类只能有一个父亲,但一个父类可以有多个孩子。

写个例子

class A{
    public void method()
    {}
}

class B extends  A{
    @Override
    public void method(){
        System.out.println("bbb");
    }
}

class  C extends  A{
    @Override
    public void method(){
        System.out.println("ccc");
    }
}

class E{
    public void method(){}
}

class D extends B,C{
    //类编译错误,这里在编写时就会报错
}

class F extends A,E{
    //类编译错误,这里在编写时就会报错
}

接口为什么可以多继承 

1、接口内都为抽象方法,没有方法体,所有子接口的继承并不影响该方法。具体的方法必须由实现接口的类去重写该方法,调用时会调用实现类的方法,不会出现歧义问题。

2、接口成员的特点:都是公共静态常量。成员变量只能是常量,默认public static final修饰;成员方法只能是抽象方法,默认public abstract修饰。

3、如果子接口继承的多个父接口中有相同的属性a,那么类在实现接口时是不能调用接口里面的属性a的,与类不能多继承原因一致,造成引用不明确。如果是不同的属性,实现类是可以调用的。

写个基础例子

interface  A{
    void method();
}
interface  B extends A{

}
interface  C extends  A{

}
interface  D  extends  B,C{
    void method();
}

 写个关于静态常量的例子

 public interface  A {
     void method();
 }
interface  B extends A {
    String a="你好";
    public abstract void method();//public abstract可省略
}
interface  C extends  A {
    String a="你不好";
}
public interface D extends B, C {
    void method();
}

 当我们去主函数中调D.a时会报引用不明确的错误

 

如果把C接口中的a换成b,再次调用则不会报错

interface  C extends  A {
    String b="你不好";
}

标签:java,类单,继承,void,接口,public,extends,method
From: https://www.cnblogs.com/nliu/p/17554000.html

相关文章

  • JAVA控制台打印进度条工具类
    有些时候我们需要写批处理任务,但是我们需要监控处理的进度,这个时候我们需要写一个计数器在统计,获取还需要好看一些。工具类代码没有第三方依赖,拷贝了网上其他出处的代码加以修改,因为源代码只能处理100条标准的数据,该进度条,不管你有多少条数据都可以正确显示如下图:使用方式也是......
  • iris框架java
    如何使用Iris框架进行Java开发简介Iris是一个基于Java的高性能Web框架,它提供了简洁易用的API,使得开发者可以快速构建Web应用程序。本文将介绍如何使用Iris框架进行Java开发,并指导刚入行的开发者实现一个简单的示例。整体流程下面是使用Iris框架进行Java开......
  • 关于Java类加载器的一些理解
    Java中,每个类都可以获得对应自己类的Class对象,这是因为Object类中有publicfinalnativegetClass()方法,Class对象是由类加载器根据类字节码生成的,是反射机制必不可少的部分。类加载器中,主要的方法有protectedClassloadClass(Stringname,booleanresolve)和protectedClassf......
  • 老杜 JavaWeb 讲解(十) —— HttpServletRequest接口源码分析
    (十二)HttpServletRequest接口源码分析对应视频:21-HttpServletRequest接口12.1介绍HttpServletRequest是一个接口,全限定名称:jakarta.servlet.http.HttpServletRequestHttpServletRequest接口是Servlet规范中的一员。HttpServletRequest接口的父接口:ServletRequest......
  • Java优化递归查询Mysql节点树数据
    示例目前有一个功能:任务计划管理,必然存在多级子任务的父子级关系,每个任务还会存在其它数据的关联表。mysql无法一次性递归查出想要的数据结构,想必很多人都会是通过根目录递归查询数据库的方式查出树结构数据。如果节点数较多,就会造成大量请求Mysql查询,效率会很低。那么如......
  • JAVA设计模式之责任链模式
    设计模式设计模式(DesignPattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、......
  • java 抛出异常后继续执行
    Java抛出异常后继续执行的实现方法作为一名经验丰富的开发者,我将为你介绍如何在Java中实现“抛出异常后继续执行”的方法。在实现之前,我们先来了解一下整个过程的流程,然后逐步进行实现。整体流程步骤描述步骤1执行可能会抛出异常的代码步骤2捕获并处理异常......
  • java 判断字符串内容是utf-8还是utf8mb4
    判断字符串内容是UTF-8还是UTF8MB4的方法概述在Java中,判断字符串内容是UTF-8还是UTF8MB4可以通过检查字符编码范围来实现。UTF-8使用1到4个字节表示一个字符,而UTF8MB4使用1到4个字节表示一个字符。下面将介绍整个流程和每一步需要做的事情。流程步骤描述1.将字符串转......
  • java 判断以逗号分割的字符串
    Java判断以逗号分割的字符串简介在Java中,判断以逗号分割的字符串可以使用split方法将字符串分割成多个子字符串,然后逐个判断每个子字符串是否满足特定条件。本文将介绍如何使用Java实现这一功能。流程图步骤描述步骤1通过split方法将字符串分割成多个子字符串步......
  • java 判断一个对象中是否存在重复的字段
    Java判断一个对象中是否存在重复的字段1.流程以下是判断一个对象中是否存在重复字段的流程:步骤描述1获取对象的所有字段2遍历字段,将字段名存入一个集合3判断集合的大小与字段数是否相等,若不相等则存在重复字段2.代码实现下面是每个步骤所需要完成的代......