首页 > 编程语言 >Java不能继承多个类?内部类帮你解决这个问题

Java不能继承多个类?内部类帮你解决这个问题

时间:2022-10-22 15:01:32浏览次数:46  
标签:Java 内部 继承 接口 匿名 XppInterface 类帮 定义

Java不能继承多个类?内部类帮你解决这个问题

内部类在Java中也是一个很重要的概念,很多类中都存在内部类。

内部类

与内部类的对应的是外围类,内部类可以操作外围类的所有成员,private修饰的内部类可以不让其他外部类来实现访问它的方法,因此更加的高效。

如果内部类被定义在了if条件作用域内,那么它在if条件之外是不能使用的。

为什么要用内部类,内部类独立于外围类,它的优点有很多,可以方便的访问外部类,减少外部类的编写,可以隐藏一些类的定义,有一定开发经验的同学可能会注意到,一些监听类的实现或者一些源码内部数据结构的定义都是使用的内部类。

这里问大家一个问题,Java中的类能不能继承多个类呢?我们都知道,Java中的类可以实现多个接口但是只能继承一个类,要想继承多个类的话,内部类可以帮我们解决一个问题:外部类继承一个类后,可以定义多个不同的内部类还可以继承不同个类,这样就实现了一个类继承多个类

匿名内部类

了解了内部类之后,我们看一看内部类的进阶篇:匿名内部类。所谓匿名内部类就是没有任何的名字,那么它怎么定义呢?看下面这个例子你就懂了:

接口:

public interface XppInterface {
  int value();
} 

匿名内部类的定义:

public class Xpp {
  public XppInterface create() {
    return new XppInterface() { 
      private int i = 0;
      public int value() { return i; }
    }; 
  }

} 

我们看一下Xpp这个类的匿名内部类在create()方法中定义,创建一个XppInterface接口的实例,括号内定义所需的成员变量,实现接口的方法,括号内的部分其实就是一个类的定义,但这个类没有名字,就是匿名内部类。

在使用的时候:

  public static void main(String[] args) {
    Xpp p = new Xpp();
    XppInterface c = p.create();
  }

先创建Xpp对象,再调用对象的create()方法,这就就得到了XppInterface接口的实例了。

这是接口的匿名内部类的实现,还可以对一个类创建一个继承它的匿名内部类,

嵌套类

当内部类被static关键字修饰的时候,它就变成了嵌套类

总结

这篇文章我们讲了Java的接口和抽象类,抽象类可能有具体的方法实现,接口比抽象类更加抽象,它全是方法的定义,没有具体实现,具体实现需要具体类来实现接口,接口的出现在设计模式中大放异彩,我们以适配器模式为例讲了接口的使用。

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 欢迎关注我❤️,点赞

    标签:Java,内部,继承,接口,匿名,XppInterface,类帮,定义
    From: https://blog.51cto.com/u_15460453/5785833

相关文章

  • 【Java SE】枚举类和注解
    1.枚举类的使用当类的对象由有限个,确定的时候,我们称这种类为枚举类。当需要定义一组常量时,建议使用枚举类。而当枚举类中只有一个对象时,可以使用单例模式。1.1enmu关键......
  • java线程的优先级
    packageA_ShangGuiGu.Thread.ThreadDemo;/***优先级*1.MAX_Priority-----最大优先级为10*2.MIN_Priority-----最小优先级为1*3.NORM_Priority----默认优先级5*4......
  • java基础-->注释
    注释注释:注释起到对代码标注和解释的作用,如果你去看看JDK源码,会发现他们有许多的注释,而且注释是比代码还要多的,可见为代码添加注释是非常重要的,写好注释能让别人更加容易......
  • java第六讲-StreamAndFileSourceCode
    1.PrintStream学习:Java打印流PrintStream类详解_风有点大的博客-CSDN博客_printstream类1.1向文件进行输出PrintStreamps=newPrintStream("helloworld01.txt"......
  • 力扣1235(java)-规划兼职工作(困难)
    题目:你打算利用空闲时间来做兼职工作赚些零花钱。这里有 n 份兼职工作,每份工作预计从 startTime[i] 开始到 endTime[i] 结束,报酬为 profit[i]。给你一份兼职工作......
  • Java--->集合中常用的ArrayList的使用和介绍
    前段时间一直在说数组,今天说下Java集合中常用的ArrayListArrayList类是一个可以动态修改的数组,与普通数组的区别就是ArrayList没有固定大小的限制,可以添加或删除元素。Array......
  • Java并发编程学习9-并发基础Demo
    构建高效且可伸缩的结果缓存本篇我们将逐步构建一个高效且可伸缩的缓存,用于改进一个高计算开销的函数。1.HashMap+并发机制我们首先能想到的就是,通过HashMap和并发......
  • java反射
    什么是反射?反射就是Reflection,Java的反射是指程序在运行期可以拿到一个对象的所有信息。正常情况下,如果我们要调用一个对象的方法,或者访问一个对象的字段,通常会传入对象实例......
  • java的class类
    除了​​int​​​等基本类型外,Java的其他类型全部都是​​class​​​(包括​​interface​​)。例如:​​String​​​​Object​​​​Runnable​​​​Exception​​...仔......
  • Java基本数据类型占用字节大小简介说明
    转自:​​http://www.java265.com/JavaMianJing/202205/16515929083261.html​​下文笔者讲述Java中基本数据类型占用字节大小的简介说明,如下所示基础数据类型是所有数据类......