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

举报
周杰伦本人 发表于 2022/11/29 18:16:35 2022/11/29
【摘要】 Java不能继承多个类?内部类帮你解决这个问题内部类在Java中也是一个很重要的概念,很多类中都存在内部类。 内部类与内部类的对应的是外围类,内部类可以操作外围类的所有成员,private修饰的内部类可以不让其他外部类来实现访问它的方法,因此更加的高效。如果内部类被定义在了if条件作用域内,那么它在if条件之外是不能使用的。为什么要用内部类,内部类独立于外围类,它的优点有很多,可以方便的访...

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。