码迷,mamicode.com
首页 > 其他好文 > 详细

内部类

时间:2020-06-24 23:23:30      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:abs   类的方法   外部   lazy   nal   --   创建   test   外部类   

内部类

Java允许将一个类A声明在另一个类B中,则类A为内部类,类B为外部类

分类

成员内部类(静态或非静态)

作为外部类的成员,调用外部类的结构

  1. 可以被static修饰
  2. 可以被四种不同权限修饰
  3. 作为类
    • 类内可以定义属性、方法、构造器等
    • 可以被final修饰,表示此类不能被继承(不使用final可以被继承)
    • 可以被abstract修饰,表示该类不能被实例化

局部内部类

  • 在方法内、代码块内、构造器内
  • 在局部内部类的方法中,如果调用局部内部类所在的声明方法中局部变量,要求此局部变量声明为final

代码实现

使用内部类

public class Test {
    public static void main(String[] args) {
        //静态成员内部类
        Person.Sing s = new Person.Sing();
        s.name = "殷志源";
        s.show();
        System.out.println("----------------");
        //非静态成员内部类
        Person p = new Person();
        Person.Walk w = p.new Walk();
        w.nickname = "丸子";
        w.show();
        //局部内部类
        System.out.println("-------------");
        p.eat();
    }
}

class Person{

    static class Sing{
        String name;

        public void show(){
            System.out.println("静态成员内部类");
            System.out.println(name + "在唱歌");
        }
    }

    class Walk{
        String nickname;

        public void show(){
            System.out.println("非静态成员内部类");
            System.out.println(nickname + "在走路");
        }
    }

    public void eat(){
        String foodname = "南煎丸子";

        class Play{
            final String gameName = "消灭星星";
            public void show(){
                System.out.println("局部内部类");
                System.out.println("在玩的游戏名字" + gameName);
            }
        }

        Play p = new Play();
        String gameName = p.gameName;
        p.show();
        System.out.println("喜欢的食物名字是" + foodname);

    }
}

运行结果

技术图片

使用

实例化成员内部类的对象

  1. 创建静态成员内部类
    技术图片
  2. 创建非静态成员内部类
    技术图片

在成员内部类中区分调用外部类的结构

技术图片

内部类

标签:abs   类的方法   外部   lazy   nal   --   创建   test   外部类   

原文地址:https://www.cnblogs.com/CrabDumplings/p/13190573.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!