文档章节

内部类

凹凸凸
 凹凸凸
发布于 07/12 23:36
字数 543
阅读 1
收藏 0

内部类

        把类定义在其他类的内部;在A类中定义一个B类,B类就是内部类

        特点

                 1 内部类可以直接访问外部类的成员,包括私有

                 2 外部类要访问内部类的成员,必须创建对象

位置划分: 成员内部类,局部内部类

成员内部类创建对象: 外部类名.内部类名 对象名 = 外部类对象.内部类对象

class Out {
    private int outNum = 10;
    class In {
        public void getOutNum(){
            // 10
            System.out.println(outNum);
        }
    }
}
public class OutAndIn {
    public static void main(String[] args) {
        Out.In  oi= new Out().new In();
        oi.getOutNum();
    }
}

静态内部类: 只能访问外部类的静态成员

创建对象方式; 外部类名.内部类名 对象名 = new 外部类名.内部类名();

class Out {
    private static int outNum = 10;
   public static class In {
        public void getOutNum(){
            // 10
            System.out.println(outNum);
        }
    }
}
public class OutAndIn {
    public static void main(String[] args) {
        Out.In  oi= new Out.In();
        oi.getOutNum();
    }
}

面试题

class Out {
    private int num = 10;

    public class In {
        private int num = 30;

        public void getOutNum() {
            int num = 50;
            // 50
            System.out.println(num);
            // 30
            System.out.println(this.num);
            // 10
            System.out.println(new Out().num);
            // 10
            System.out.println(Out.this.num);
        }
    }
}
public class OutAndIn {
    public static void main(String[] args) {
        Out.In oi = new Out().new In();
        oi.getOutNum();
    }
}

局部内部类

class Out {
    private int num = 10;

    public void getOutNum() {

        class In {
            public void getNum() {
                // 10
                System.out.println(num);
            }
        }

        In in = new In();
        in.getNum();
    }
}
public class OutAndIn {
    public static void main(String[] args) {
        new Out().getOutNum();
    }
}

匿名内部类

        内部类的简化写法

        前提: 存在一个类(具体类或者抽象类)或者接口

        格式: new 类名或者接口名() {重写方法}

        本质: 是一个继承了类或者实现了接口的子类匿名对象

interface In {
    void getNum();
}

class Out {
    private int num = 10;

    public void getOutNum() {

        new In() {
            @Override
            public void getNum() {
                System.out.println(num);
            }
        }.getNum();
    }
}
public class OutAndIn {
    public static void main(String[] args) {
        new Out().getOutNum();
    }
}
interface In {
    void getNum();
}

class Out {
    private int num = 10;

    public In getOutNum() {

       return new In() {
            @Override
            public void getNum() {
                System.out.println(num);
            }
        };
    }
}
public class OutAndIn {
    public static void main(String[] args) {
        new Out().getOutNum().getNum();
    }
}

© 著作权归作者所有

上一篇: Class、Object类
凹凸凸
粉丝 1
博文 32
码字总数 27007
作品 0
成都
私信 提问
JAVA内部类是怎么玩儿的

内部类一共分为:成员内部类,局部内部类,静态嵌套类,匿名内部类。 1. 成员内部类 最普通的内部类 成员内部类,就是作为外部类的成员,可以直接使用外部类的所有成员和方法,即使是private...

牧师-Panda
2016/09/08
15
0
黑马程序员---面向对象之内部类

-------------------------android培训、java培训、期待与您交流! ------------------------- Java中的内部类有四种:一般内部类、静态内部类、局部内部类、匿名内部类。 一、一般内部类 定...

长平狐
2013/07/01
82
0
Java中的内部类总结

内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为...

zhangyujsj
2016/01/04
4
0
Java的内部类

类是java中定义的一个独立的程序单元,在某种情况下也可以把一个类放在另外一个类的内部定义,这定义在内部的类就叫内部类或嵌套类。 1.内部类提供了更好的封装,把一个内部类隐藏在外部类之...

西红柿的眼泪
2016/07/09
38
0
经典Java面试题-内部类

[面试原题] 以下代码运行结果是什么? public class BwfOuterClass { private int x = 1; private int y = 2; private class BwfInnerClass{ private int x = 3; public void print(){ Syst......

博为峰教研组
2016/10/27
66
0

没有更多内容

加载失败,请刷新页面

加载更多

php 遇到 No input file specified的解决方法

(一)IIS Noinput file specified 方法一:改PHP.ini中的doc_root行,打开ini文件注释掉此行,然后重启IIS 方法二: 请修改php.ini 找到 ; cgi.force_redirect = 1 去掉前面分号,把后面的1...

chenhongjiang
今天
5
0
MySQL 基础

一、常用命令 在命令行中,配置好环境变量后,通过cmd可以直接进入mysql命令行模式,同时列举几种常用命令 # 进入mysql数据库,密码可以先不写,打完-p后再输入,防止被别人看到mysql -u账...

华山猛男
今天
6
0
简单的博客系统(四)Django请求HTML页面视图信息--基于函数的视图

1. 编写用于查询数据的功能函数 应用目录 下的 views.py 文件通常用于保存响应各种请求的函数或类 from django.shortcuts import renderfrom .models import BlogArticles# Create your ...

ZeroBit
今天
5
0
用脚本将本地照片库批量导入到Day One中

因为目前iCloud 空间已经不足,其中95%都是照片,之前入手了DayOne,且空间没有限制,订阅费一年也不少,再加上DayOne作为一款日记App 也比较有名,功能方面最大的就是地理视图与照片视图,尤...

在山的那边
昨天
21
0
jupyter部署安装

python373 -m ipykernel install --name python373 ipython kernelspec list sc create myjupyterservice binpath="D:\apply\Python373\Scripts\jupyter-notebook --config=V:/my_work/jupyt......

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部