java中,剩下的这两个内部类不太好理解!

简介: java中,剩下的这两个内部类不太好理解!


大家好,我是雄雄,今天我们接着昨天的分享,将剩余的两个内部类(方法内部类和匿名内部类)结束掉,这两个内部类都不太好理解。

昨天的推文:java中常见的几种内部类,你会几个?(未完)

书接上文,昨天我们说到了java中的内部类有四种,分别是:静态内部类、成员内部类、方法内部类、匿名内部类,其中前面两种(静态内部类和成员内部类)我们在昨天已经讲过,现在我们来看看后两种。

方法内部类

顾名思义,一看名字就知道意思系列,方法内部类即在方法的内部声明一个类,代码如下:

//外部类
public class People {
  
  private String name ;
  
  
  //方法
  public People show(){
    //内部类
     class Man extends People{
      //内部类中的方法
      public void getMan(){
        System.out.println("名称是:"+name);
        System.out.println("执行内部类的方法");
      }
    }
     //创建内部类的对象
     Man man = new Man();
     //调用内部类的方法
     man.getMan();
     return new Man();
  }
  
  //main方法
  public static void main(String[] args) {
    People people = new People();
    people.name = "雄雄的小课堂";
    people.show();
  }
}

代码分析:

有一外部类People,然后在里面有一属性name,还有一方法show();接着在show()方法内部创建了一个名为Man的内部类,这里都好说,不好说的是后面调用的时候可能有的伙伴们一下子想不起来;

我们只需要在外部类的这个方法(show())里面实例化内部类,通过该对象名即可调用内部类中的方法。

//方法
  public People show(){
    //内部类
     class Man extends People{
      //内部类中的方法
      public void getMan(){
        System.out.println("名称是:"+name);
        System.out.println("执行内部类的方法");
      }
    }
     //创建内部类的对象
     Man man = new Man();
     //调用内部类的方法
     man.getMan();
     return new Man();
  }

注意,方法内部类相当于方法里面的一个局部变量一样,不能有publicprivatestatic 类的关键词修饰。一般这种方法用的很少。

匿名内部类

匿名内部类和前面介绍的内部类不同,匿名内部类没有单独定义类而是通过new后面是父类或者接口时创建的,代码如下:

People接口:

//外部接口
public interface People {
  //吃饭
  public void eat();
}

Man类:

public class Man{
  public static void show(){
    //匿名类
    People p = new People() {
      @Override
      public void eat() {
        System.out.println("正在吃饭……");
      }
    };
    p.eat();
  }
  public static void main(String[] args) {
    Man man = new Man();
    man.show();
  }
}

运行结果如图所示:

总结:匿名内部类是没有名字的,所以只能使用一次,他是用来简化代码的,使用的时候,必须继承一个父类或者实现一个接口。

下期内容更精彩,欢迎关注【雄雄的小课堂】


相关文章
|
5月前
|
Java 编译器
【Java】内部类
【Java】内部类
42 0
|
7月前
|
Java
【Java基础面试二】、个Java文件里可以有多个类吗(不含内部类)?
这篇文章讨论了Java文件中类的定义规则,指出一个Java文件可以包含多个类(不包含内部类),但其中最多只能有一个public类,且如果有public类,它的名称必须与文件名一致。
|
7月前
|
算法 Java
12 Java常用类(一)(内部类+object类+包装类)
12 Java常用类(一)(内部类+object类+包装类)
60 5
|
8月前
|
Java
Java进阶之内部类
【7月更文挑战第13天】Java内部类增进代码组织与封装,允许直接访问外部类成员,包括私有成员。主要有四种类型:成员、静态、局部和匿名内部类。匿名内部类常用于一次性实现接口或扩展类。内部类可隐藏实现细节,减少命名冲突,并在特定上下文中定义辅助类。示例展示了静态和非静态内部类如何在Shape类中封装Circle和Rectangle。使用内部类能提升代码可读性,但可能增加复杂性。
64 6
|
7月前
|
Java
【Java】内部类、枚举、泛型
【Java】内部类、枚举、泛型
|
9月前
|
Java
一篇文章讲明白Java中内部类详解—匿名内部类
一篇文章讲明白Java中内部类详解—匿名内部类
139 2
|
9月前
|
设计模式 Java 编译器
Java中的内部类(如果想知道Java中有关内部类的知识点,那么只看这一篇就足够了!)
Java中的内部类(如果想知道Java中有关内部类的知识点,那么只看这一篇就足够了!)
|
9月前
|
Java 编译器
24. 【Java教程】内部类
24. 【Java教程】内部类
48 2
|
10月前
|
Java 程序员
Java的内部类与匿名类的技术性文章
Java的内部类与匿名类的技术性文章
73 1
|
10月前
|
Java
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
134 3