1、概述

    1.1  内部类:一个类  定义在  其他类的内部,这个类被称为内部类;

        1.1.1  内部类可以   放在外部类的任何位置,方法中也可以(称为局部内部类);

        1.1.2  一般将内部类作为 成员内部类 使用

        1.1.3  内部类大致分类

              1.1.3.1、成员内部类

                      (定义在类中)

                    非静态内部类

                    静态内部类

public class CYInnerClass {

    /**
* 非静态成员内部类
*/
class A{ } /**
* 静态成员内部类
*/
static class B{ } public static void main(String[] args) { }
}

  

              1.1.3.2、局部内部类

                    a,  定义在方法中,仅在方法中有效;

                    b,  不能使用任何修饰符,也不能用static修饰;

package com.exiuge.mytest.innerclass;

public class JuBuInnerClass {

    private int age;

    public static void main(String[] args){

        class A{
int a;
} class B extends A{
int b;
} A a=new B();
a.a=10;
((B) a).b=11;
System.out.println(a.a+":"+((B) a).b);
}
}

              1.1.3.3、匿名内部类

                  a,  只使用一次;

                  b,  语法:

                        new 父类构造器(实参)  |  实现接口(){      }

                  c,  必须   继承一个父类(最多一个)  或  实现一个接口(最多一个);

                  d,  不能  定义构造器,但   可以有初始化块;

                  e,  不能   是抽象类;

public interface NMInnerClassInterface {
}

  

public class NMInnerClass {

    private String name;
private Integer age; public NMInnerClass(){ } public NMInnerClass(Integer age){
this.age=age;
} public void say(){ /**
* 匿名内部类调用父类构造器
*/
new NMInnerClass(23){ void test(){
System.out.println("hahaha...");
} }; /**
* 匿名内部类实现接口
*/
new NMInnerClassInterface(){
void test(){
System.out.println("hahaha...");
}
}; }
}

  

2、使用

      2.1、在外部类  以外   使用内部类  

            eg:

package com.an.innerclass;

/**
* @description:
* @author: anpeiyong
* @date: Created in 2019/12/26 9:01
* @since:
*/
public class CYInnerClass { /**
* 非静态成员内部类
*/
class A{ } /**
* 静态成员内部类
*/
static class B{ }
}

  

public class Test {

    public static void main(String[] args) {
CYInnerClass cyInnerClass=new CYInnerClass();
CYInnerClass.A a=cyInnerClass.new A();
}
}

  

          

        

JavaSE---内部类的更多相关文章

  1. Object类、包装类、内部类详解

    1.Object类 1.概念: 1.1 所有类在创建时都默认继承了java.lang.Object 1.2 所有类对象都可以声明为类对象的引用 Object ob1=new String(); Obj ...

  2. JavaSE学习笔记(5)---内部类和String类

    JavaSE学习笔记(5)---内部类和String类 一.内部类基础 转自菜鸟教程 ​ 在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来 ...

  3. JavaSE 复习_4 接口多态和内部类

    △abstract不可以修饰成员变量 △一个类可以没有抽象方法,可以定义为抽象类,这样的目的是不能让其他类建立本类对象,交给子类完成. △abstract和static(可以被类名调用方法,但是抽象方 ...

  4. JavaSE学习总结(六)——接口、抽象类、内部类

    一.不需要实例化的原因 看一个示例: package com.zhangguo.chapter5.s1; /**动物园*/ public class Zoo { public static void ...

  5. JAVASE(十一) 高级类特性: abstract 、模板模式、interface、内部类、枚举、注解

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.关键字 abstract 1.1.abstract可以修饰:类,方法 1.2.abstract修饰方 ...

  6. JavaSE 学习笔记03丨继承、接口、多态、内部类

    Chapter. 5 继承 继承作为面向对象的三大特征之一,它是多态的前提.它主要解决的问题是共性抽取. Java中的继承,是单继承.多级继承的. 已存在的类,被称为超类.基类.父类(parent c ...

  7. JAVASE笔记回顾

    第一部分,JAVA基础和面向对象 part01 入门与开发环境搭建 1: 计算机基础知识(了解)(1)计算机(2)计算机硬件(3)计算机软件系统软件:windows,linux,mac应用软件:QQ, ...

  8. Java中的嵌套类和内部类

    以前看<Java编程思想>的时候,看到过嵌套类跟内部类的区别,不过后来就把它们的概念给忘了吧.昨天在看<数据结构与算法分析(Java语言版)>的时候,又遇到了这个概念,当时就很 ...

  9. JavaSE集合(十)之Map

    前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族.以前的时候学习Map的时候没有很认真的去学习,我觉得很多东西还是不是很清楚. 这次我将总结的 ...

  10. java 内部类 嵌套类

    .markdown-body { color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI" ...

随机推荐

  1. Luogu 4216 [SCOI2015]情报传递

    BZOJ 4448. 写起来很愉悦的题. 按照时间可持久化线段树,修改就在原来的地方加$1$即可,查询就直接询问$root_1 - root_{now - c - 1}$中相应的个数. 主席树维护树链 ...

  2. vue 之 Nodejs介绍

    Nodejs英文网:https://nodejs.org/en/ 中文网:http://nodejs.cn/ 我们会发现这样一句话: 翻译成中文如下: Node.js 是一个基于 Chrome V8 ...

  3. 2015年第六届蓝桥杯省赛试题(JavaA组)

    1.结果填空 (满分3分)2.结果填空 (满分5分)3.结果填空 (满分9分)4.代码填空 (满分11分)5.代码填空 (满分13分)6.结果填空 (满分17分)7.结果填空 (满分21分)8.程序设 ...

  4. 如何设置Oracle process值

    参考链接:http://blog.51cto.com/sunwayle/88870 su - oracle sqlplus system as sysdba; show parameter proce ...

  5. 动态横向(水平)合并GridView数据行DataRow的列

    前一段时间,Insus.NET有写过<动态合并GridView数据行DataRow的列>http://www.cnblogs.com/insus/p/3238348.html, 那是纵向( ...

  6. VB.NET提取TXT文档指定内容

    今天有浏览论坛时,又看见一篇是读取TXT文本文件的论题.Insus.NET也想以自己的想法来实现,并分享于此. 文本文件是比较复杂,获取数据也是一些文本行中取其中一部分.为了能够取到较精准的数据,In ...

  7. vmware vmware esxi5.x安装方法及解决错误

    vmware Esxi5.x安装指南 vmware Esxi5文档中心官网地址: http://pubs.vmware.com/vsphere-55/index.jsp?topic=%2Fcom.vm ...

  8. Django之request对象

    在view.py的函数中.我们的函数中第一个参数都是request.在request中有一些信息,比如正在加载这个页面的用户是谁,或者是用什么浏览器之类的.这对于我们网站的管理是很有用处的. requ ...

  9. Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.socket

    一.解决var/run/mysqld没有pid和sock文件 MySQL下mysql.sock丢失丢失的原因一般是因为配置文件不一致的原因,mysqld 错误启动,mysqld_safe 会清除一次m ...

  10. centos-7.4_ceph-12.2.4部署

    centos-7.4_ceph-12.2.4部署: 前言: 基于centos7.4安装ceph-luminous的主要步骤有一下几点: 1.安装centos7.4的系统,并配置网卡 2.安装前的环境配 ...