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. poj3557 Map Generator

    传送门 题目大意 给定两个数n,p;表示n个点中任意两点连边的概率为p,求生成的图是个连通块的概率 分析 我们发现直接求产生联通块的概率并不容易,于是我们转而考虑计算不能生成联通块的概率,公式如下: ...

  2. LeetCode第110题:平衡二叉树

    问题描述 给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1. 示例 1: 给定二叉树 [3,9,20,nu ...

  3. 记一次OOM问题排查过程

    上周运维反馈线上程序出现了OOM,程序日志中的输出为 Exception in thread "http-nio-8080-exec-1027" java.lang.OutOfMe ...

  4. Linux下boost编译安装

    说明:下面内容仅针对Linux环境(boost官网为:http://www.boost.org/,可从这里下载它的源代码包,这里要求下载.tar.gz包,而非.7z..zip或bz2包). 在当前目录 ...

  5. idea中解决Error:java: Compilation failed: internal java compiler error的问题

    项目中,使用gradle做项目构建,当我们想更改JDK的版本时,报以下错误: Information:Using javac 1.8.0_111 to compile java sourcesInfo ...

  6. 【Android学习】三种布局<include />、<merge />、<ViewStub />

    1.布局重用<include /> <include />标签能够重用布局文件,使用起来非常简单 <include layout="@layout/layout ...

  7. C# WinForm:无法访问已释放的对象

    C#在父窗口中调用子窗口的过程: 1. 创建子窗口对象 2. 显示子窗口对象   笔者的程序中,主窗体MainFrm通过菜单调用子窗口ChildFrm.在窗体中定义了子窗口对象,然后在菜单项点击事件中 ...

  8. MySQL的索引单表优化案例分析

    建表 建立本次优化案例中所需的数据库及数据表 CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`article`( `id` INT ...

  9. vue 路由里面的 hash 和 history

    对于 Vue 这类渐进式前端开发框架,为了构建 SPA(单页面应用),需要引入前端路由系统,这也就是 Vue-Router 存在的意义.前端路由的核心,就在于 —— 改变视图的同时不会向后端发出请求. ...

  10. P4177 [CEOI2008]order 最小割

    \(\color{#0066ff}{ 题目描述 }\) 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完成. 现在给 ...