zoukankan      html  css  js  c++  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();
      }

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

    匿名内部类

    匿名内部类和前面介绍的内部类不同,匿名内部类没有单独定义类而是通过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();
      }
    }

    运行结果如图所示:

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

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

    粉丝群

    ▲每天都会有不定额的红包发放,了解公众号文章、抽奖最新资讯。

    往期推荐

    java中常见的几种内部类,你会几个?(未完)

    java中你知道的这四种代码块吗?

    切记!构造函数里面别一定不要初始化其他类,踩过坑的都知道

    浅谈我的读书史(2)

    浅谈我的读书史(1)

  • 相关阅读:
    350. Intersection of Two Arrays II
    94. Binary Tree Inorder Traversal
    623. Add One Row to Tree
    JS判断是否为数字,中文,小写、大写字母
    ASP.NET 操作Cookie详解 增加,修改,删除
    ASP.NET MVC 入门1、简介
    通过LINQ TO SQL类显示数据库表的数据
    OutputCache缓存优化asp.net代码 提高网页性能
    数据库读取二进制图片显示到PictureBox中
    WinForm窗体间如何传值的几种方法
  • 原文地址:https://www.cnblogs.com/a1111/p/14877425.html
Copyright © 2011-2022 走看看